【问题标题】:Convert lambda expressions to SQL in an ORM?将 lambda 表达式转换为 ORM 中的 SQL?
【发布时间】:2011-04-21 14:33:22
【问题描述】:

我如何编写将 LINQ 转换为 SQL 的 ORM?

我已经制作了一个现有的 ORM,但我想用 LINQ 对其进行改进,这样我就可以说:

MyORMObject.GetAll(o => o.firstName == "peter");

我脑海中的想法是系统会接受它并将其转换为查询。我想最难的部分是读取解析到 LINQ 部分的内容。

我该怎么做?换句话说,我将如何(通过反射或其他方式)读取正在使用的 FirstName 属性及其所需的匹配项“Peter”?

【问题讨论】:

    标签: c# sql linq reflection orm


    【解决方案1】:

    您将需要implement an IQueryable LINQ Provider。顺便说一句,您不会使用反射,而是使用 Expression 树。

    【讨论】:

      【解决方案2】:

      如果你的方法是IEnumerable<T> GetAll<T>(Expression<Func<T,bool>>),那么 lambda 表达式将被编译为一个表达式树,带有一个 Equals 子表达式,它又具有一个包含 FirstName 属性的 MemberExpression 和一个 @ 987654325@ 包含字符串。

      【讨论】:

        猜你喜欢
        • 2017-09-25
        • 1970-01-01
        • 1970-01-01
        • 2012-06-14
        • 2020-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-16
        相关资源
        最近更新 更多