【问题标题】:Entity Framework - dynamic sql实体框架 - 动态 sql
【发布时间】:2009-08-25 17:37:56
【问题描述】:

我正在为使用实体框架的应用程序实现搜索功能。有几个可选字段用于搜索特定的数据库表/视图。使用 EF 实现此类搜索的最佳方法是什么?存储过程?还是只能(实际上)使用 Linq 来完成?

【问题讨论】:

    标签: c# linq entity-framework


    【解决方案1】:

    处理可选搜索参数的常见模式是执行以下操作:

    string p = null;
    var q = from o in dataContext.Products
        where ((o.Name == p) || (p == null))
        select o;
    

    【讨论】:

      【解决方案2】:

      您应该能够在 LINQ 中轻松做到这一点。永远记住 LINQ 查询是可链接的:

      var query = (from p in products
                   select p);
      
      if(field1 != null)
      {
          query = (from p in query
                   where p.Field1 = field1
                   select p);
      }
      
      if(field2 != null)
      {
          query = (from p in query
                   where p.Field2 = field2
                   select p);
      }
      
      foreach(Product p in query)
      {
         // ...
      }
      

      【讨论】:

      • “查询”的原定义会导致“select * from products”被执行吗?
      • 没有。直到最后一刻才枚举 LINQ 查询(即不从数据库中检索结果)。调用只是建立起来,然后当您需要访问结果中的特定元素(或计数等)时,将从数据库中检索整个组装查询。
      【解决方案3】:

      Loren 所说的将起作用 (+1)。或使用Microsoft Dynamic LINQ。它适用于 L2E。

      【讨论】:

        【解决方案4】:

        您可以查看 this article 关于动态生成 lambda 表达式对象来执行此操作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-29
          • 2020-06-16
          • 1970-01-01
          • 2013-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-16
          相关资源
          最近更新 更多