【问题标题】:Define business methods usable by linq to entity and linq to objects定义 linq to entity 和 linq to objects 可用的业务方法
【发布时间】:2012-03-01 18:59:34
【问题描述】:

我在我的项目中使用了很多 LINQ 查询和业务方法。 允许从 Iqueryable 使用这些业务方法:

  • 我在 SQL Server 中定义了 UDF 函数(带有所需的参数)
  • 将此 UDF 添加到应用程序的 EDMX 模型中
  • 并在 UDF 和 LinQ 之间使用这样的方法在 从 dbcontext 继承的部分类:

      [EdmFunction("MyProject.Store", "GetTaxesOfProduct")]
       public static Decimal GetTaxesOfProduct(Decimal amount, Int32 TaxMethod)
       {
           throw new NotSupportedException("Not direct access possible, use with E-SQL or LINQ");
       }
    

这对 IQueryable 非常有效。 但问题是,要从一个简单对象(未链接到数据库记录)中使用此方法,我需要制作一些令人毛骨悚然的东西:

var query = from foo in context.JustATable select context.GetTaxesOfProduct(15.55, 3);

最近我遇到了http://blogs.msdn.com/b/charlie/archive/2008/01/31/expression-tree-basics.aspx,他解释了如何通过表达式创建一个可用于 C# 对象和 IQueryable 的方法

那么,使用表达式,是否可以像我的方法一样制作业务方法,但不使用 UDF 而只使用表达式?

提前谢谢你!

【问题讨论】:

    标签: linq entity-framework entity-framework-4 linq-to-entities


    【解决方案1】:

    这取决于您的 UDF 的内容。表达式只能与模型中定义的实体一起使用,并且只能使用实体框架提供者为您的数据库提供的操作。因此,如果您在 UDF 中使用任何不支持 LINQ 等效或非映射功能的复杂 SQL 语句,它将无法工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多