linq to entities vs linq to objects – 它们是一样的吗?
我通常使用术语entity
来表示业务数据对象,在我看来, linq to entities
linq to objects
是相同的。 这不正确吗?
绝对不是这样的。
LINQ-to-Objects是IEnumerable
上的一组扩展方法,允许您对任意对象序列执行内存查询操作。 这些方法在必要时接受简单的委托。
LINQ-to-Entities是一个LINQ提供程序,在IQueryable
上有一组扩展方法。 这些方法构建了一个表达式树(这就是委托实际作为Expression<>
s传递的原因),并且提供程序将根据其对该表达式树的解析来构建SQL查询。
例如,请考虑以下查询:
var query1 = mydb.MyEntity.Select(x => x.SomeProp).Where(x => x == "Prop"); var query2 = mydb.MyEntity.Select(x => x.SomeProp).AsEnumerable().Where(x => x == "Prop");
第一个查询将构建一个由select和where组成的表达式树,其中两个lambdas实际上被视为LambdaExpression
。 LINQ-to-Entities提供程序将把它转换为选择和过滤的SQL。
第二个查询插入一个AsEnumerable()
,它将强制查询的其余部分使用LINQ-to-Objects。 在这种情况下,提供程序将仅基于选择生成SQL,从数据库返回所有这些记录,然后过滤将在内存中进行。 显然,这可能会慢得多。
L2o用于记忆内目标。 L2e查询数据库。
Linq to entities旨在与Entity Framework一起使用,而Linq to objects适用于任何IEnumerable集合。
更多细节:
- Linq to Entities
- Linq to Objects
Linq to Objects术语“LINQ to Objects”是指直接使用LINQ查询与任何IEnumerable或IEnumerable集合,而不使用中间LINQ提供程序或API,如LINQ to SQL或LINQ to XML。 您可以使用LINQ查询任何可枚举的集合,例如List,Array或Dictionary。 该集合可以是用户定义的,也可以由.NET Framework API返回。
从基本的意义上讲,LINQ to Objects代表了一种新的集合方法。 以旧方式,您必须编写复杂的foreach循环,指定如何从集合中检索数据。 在LINQ方法中,您编写描述要检索内容的声明性代码。
参考: http : //msdn.microsoft.com/en-us/library/bb397919.aspx
Linq to Entity LINQ to Entities提供语言集成查询(LINQ)支持,使开发人员能够使用Visual Basic或Visual C#编写针对Entity Framework概念模型的查询。 针对entity framework的查询由命令树查询表示,命令树查询针对对象上下文执行。 LINQ to Entities将语言集成查询(LINQ)查询转换为命令树查询,针对entity framework执行查询,并返回可由entity framework和LINQ使用的对象。 以下是创建和执行LINQ to Entities查询的过程:参考: http : //msdn.microsoft.com/en-us/library/bb386964.aspx
Linq2Entities代表通过ADO.NETentity framework(数据库)查询数据
Linq2Objects代表查询内存数据(本地对象)。
上述就是C#学习教程:linq to entities vs linq to objects – 它们是一样的吗?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1043395.html