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

时间:2012-04-30 20:58:52

标签: stored-procedures enterprise-library data-access

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

我想做的是这样的事情:

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

并将匿名对象转换为各种SqlParameter对象。

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

1 个答案:

答案 0 :(得分:0)

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

考虑一个存储过程,它接受2个int参数,然后是一个代码片段:

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

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