在自定义对象中实现LINQ to SQL / Entity行为

时间:2011-08-05 19:39:15

标签: .net linq

我很好奇Enity Framework是如何与LINQ集成的,以便生成针对数据库运行的SQL语句。

所以我想说我有自己的自定义集合对象。如何将该对象与LINQ集成以生成SQL语句?

3 个答案:

答案 0 :(得分:3)

如果您想创建自己的创建SQL语句的集合,那么您要做的是让您的集合类实现IQueryable接口。作为此接口的一部分,当执行Linq表达式时,.NET框架会将Linq表达式树传递给IQueryable的自定义实现。然后,您的代码将解析此表达式树,并根据需要生成SQL,或执行所需的任何其他操作,并返回结果。

编辑:添加链接

答案 1 :(得分:2)

您必须在自定义类上实现某些接口(例如IQueryable)才能使用Linq查询它们。此外,如果你有一个集合构成你的类,那么你可以暴露它的枚举器,以获得这个地形(实现IEnumerable)。 看到: How to implement IQueryable

如果你需要一个非常专业的“Linq”功能,比如在Linq to SQL中使用Linq表达式将Linq表达式转换为T-SQL,那么Linq就像一个标准:不同的技术集实现了Linq,但是有一定的准则。这对于Linq to XML,Linq to Entities,Linq to SQL等是正确的。 参见:

Walkthrough: Creating an IQueryable LINQ Provider

答案 2 :(得分:1)

为了帮助那些有类似要求的人,我编写了一系列有关如何创建简单LINQ提供程序,解析表达式树,将它们转换为所需输出(例如SQL)和编译的教程。在为生产系统开发了一个这样的提供者之后,我最终认为这种体验可能对其他人有所帮助,挑战在于找到时间将其写入。过去,我从其他人那里分享了他们的知识,尤其是那些缺乏知识的主题,我从中受益匪浅,所以,希望这也可以找到一个观众: