【问题标题】:Microsoft Enterprise Library 5.0 Data Access - is it possible to do "query by example" functionality?Microsoft Enterprise Library 5.0 数据访问 - 是否可以执行“示例查询”功能?
【发布时间】:2012-05-10 13:19:28
【问题描述】:

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

我想做的是这样的:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    考虑一个采用 2 个 int 参数的存储过程,那么代码 sn-p 将如下所示:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多