Stored procedures Microsoft Enterprise Library 5.0数据访问-是否可以执行“按示例查询”功能?

Stored procedures Microsoft Enterprise Library 5.0数据访问-是否可以执行“按示例查询”功能?,stored-procedures,enterprise-library,data-access,Stored Procedures,Enterprise Library,Data Access,我正在使用数据访问应用程序块5.0进行评估,因为在可预见的未来,我们将使用存储过程。我喜欢其中包含的简单性和映射器,但让我不感兴趣的是,似乎没有一种方法可以为存储过程调用指定参数数组,或者更好的是指定某种类型的按示例对象查询,该调用将根据您的条件自动创建参数。设想一个search customer功能,您可以在其中指定一个或多个需要搜索的属性——假设我们已经创建了一个带有可空字段的存储过程 我想做的是这样的: var customerQuery = new { FirstName = "John

我正在使用数据访问应用程序块5.0进行评估,因为在可预见的未来,我们将使用存储过程。我喜欢其中包含的简单性和映射器,但让我不感兴趣的是,似乎没有一种方法可以为存储过程调用指定参数数组,或者更好的是指定某种类型的按示例对象查询,该调用将根据您的条件自动创建参数。设想一个search customer功能,您可以在其中指定一个或多个需要搜索的属性——假设我们已经创建了一个带有可空字段的存储过程

我想做的是这样的:

var customerQuery = new { FirstName = "John", LastName = "Doe" }
var result = db.ExecuteSprocAccessor("SearchCustomers", customerQuery);
并将匿名对象转换为各种SqlParameter对象


这样的事情可能吗?我在MSDN上看到的示例似乎只是显示手动指定单个参数,而不知道哪个参数是哪个。

企业库数据访问应用程序块支持各种映射器:输出映射器、结果集映射器和。在本例中,参数映射器是您感兴趣的对象。如果您使用的是SqlDatabase或OracleDatabase,则支持默认参数映射机制。默认映射过于简单,并且基于参数的位置,但是如果需要,您可以创建自己的映射器

考虑一个接受2个int参数的存储过程,则代码段如下所示:

var logs = db.ExecuteSprocAccessor<Log>("usp_getLogs", 
               new object[] { 1, -1 } // parameters as array
           ).ToList();
您可以构建一些帮助器方法来创建适当的对象数组