0

我正在评估在工作中使用 Data Access Application Block 5.0,因为在可预见的未来我们将与存储过程结婚。我喜欢其中包含的简单性和 Mapper,但让我感到厌烦的是似乎没有一种方法可以指定参数数组,甚至没有更好的某种“通过示例查询”对象,到存储过程调用,它将根据您的条件自动创建参数。想象一个搜索客户功能,您可以在其中指定一个或多个需要搜索的属性(假设我们已经创建了一个带有可为空字段的存储过程)。

我想做的是这样的:

var customerQuery = new { FirstName = "John", LastName = "Doe" }
var result = db.ExecuteSprocAccessor("SearchCustomers", customerQuery);

并将匿名对象变成各种SqlParameter对象。

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

4

1 回答 1

0

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

考虑一个带有 2 个 int 参数的存储过程,那么代码片段将如下所示:

var logs = db.ExecuteSprocAccessor<Log>("usp_getLogs", 
               new object[] { 1, -1 } // parameters as array
           ).ToList();

您可以构建一些辅助方法来创建适当的对象数组。

于 2012-05-02T06:06:40.570 回答