我正在评估使用数据访问应用程序块5.0的工作,因为我们在可预见的未来与存储过程结合。我喜欢简单和包含在其中的Mapper,但是让我失望的是,似乎没有办法指定参数数组,甚至更好的某种“按示例查询”对象,到存储过程调用,它将根据您的条件自动创建参数。想象一下搜索客户功能,您可以在其中指定一个或多个需要搜索的属性(假设我们已经使用可空字段创建了存储过程)。
我想做的是这样的事情:
var customerQuery = new { FirstName = "John", LastName = "Doe" }
var result = db.ExecuteSprocAccessor("SearchCustomers", customerQuery);
并将匿名对象转换为各种SqlParameter
对象。
这样的事情可能吗?我在MSDN上看到的示例似乎只是显示手动指定单个参数,而不知道哪个参数是哪个。
答案 0 :(得分:0)
企业库数据访问应用程序块支持各种映射器:输出映射器,结果集映射器和Parameter Mappers。在这种情况下,参数映射器是您感兴趣的。如果您使用的是SqlDatabase或OracleDatabase,则支持默认参数映射机制。默认映射是简单的,并且基于参数的位置,但您可以根据需要创建自己的映射器。
考虑一个存储过程,它接受2个int参数,然后是一个代码片段:
var logs = db.ExecuteSprocAccessor<Log>("usp_getLogs",
new object[] { 1, -1 } // parameters as array
).ToList();
您可以构建一些辅助方法来创建适当的对象数组。