2011-04-21 55 views
3

我該如何編寫一個將LINQ轉換爲SQL的ORM?將lambda表達式轉換爲ORM中的SQL?

我已經做了一個現有的ORM,但我想用LINQ來改善它,讓我舉個例子就能夠說:

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

在我的腦海的想法是,該系統將然後將其轉換爲查詢。我想最難的部分是閱讀分析到LINQ部分的東西。

我該怎麼做?換句話說,我將如何(通過思考或其他方式)閱讀正在使用的FirstName屬性,以及它所需的匹配項「Peter」?

回答

3

如果方法是IEnumerable<T> GetAll<T>(Expression<Func<T,bool>>),那麼lambda表達式將被編譯爲一個表達式樹,與Equals子表達,這反過來又具有包含FirstName性的MemberExpression,以及含有該字符串ConstantExpression