将lambda表达式转换为ORM中的SQL



我怎么能写一个ORM将LINQ转换成SQL?

我已经做了一个现有的ORM,但我想用LINQ改进它,这样我,例如,就能说:

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

我脑子里的想法是,系统会把它转换成一个查询。我想困难的部分是读取解析到LINQ部分的内容。

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

你将需要实现一个IQueryable LINQ Provider。顺便说一下,你不会使用反射,你将使用表达式树。

如果您的方法是IEnumerable<T> GetAll<T>(Expression<Func<T,bool>>),那么lambda表达式将被编译为一个表达式树,具有Equals子表达式,该子表达式依次具有包含FirstName属性的MemberExpression和包含字符串的ConstantExpression

相关内容

  • 没有找到相关文章

最新更新