LINQ到实体VS LINQ的对象 - 他们是一样的吗?

我通常使用术语entity来表示业务数据对象,并在我的脑海中, linq to entitieslinq to objects是一样的。 那是不正确的?

--------------解决方案-------------

这绝对不是这样的。

LINQ到对象是一组关于扩展方法IEnumerable<T>让您在对象上的任意序列的执行内存查询操作。 必要时该方法简单接受委托。

LINQ到实体是具有一组扩展方法LINQ提供程序IQueryable<T> 该方法建立了一个表达式树(这就是为什么代表们实际上是通过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");

第一个查询是将建立一个表达式树由选择和在那里,用实际视为两个lambda表达式LambdaExpression秒。 在LINQ到实体提供商将它转换成SQL,无论选择和过滤器。

第二个查询插入一个AsEnumerable()这将迫使查询的其余部分使用LINQ到对象。 在这种情况下,提供者将产生仅基于选择SQL中,从数据库中返回所有那些记录,然后过滤将出现在内存中。 显然,这很可能将是慢得多。

L2O为内存objectes。 L2E查询数据库。

LINQ到实体旨在与实体框架来使用,而LINQ到对象为任何IEnumerable集合。

更多细节:

  1. LINQ到实体
  2. LINQ到对象

LINQ到对象术语“LINQ到对象”是指利用LINQ查询直接与任何的IEnumerable或IEnumerable集合,而不使用中间LINQ提供程序或API,如LINQ to SQL或LINQ到XML。 您可以使用LINQ查询任何可枚举的集合,如列表,数组或字典。 集合可以是用户定义的,或者可以通过一个.NET框架的API返回。

在基本意义上的LINQ to Objects代表了一种新的方法来收藏。 在老办法,你必须编写规定如何从收集的数据中检索复杂的foreach循环。 在LINQ的方法,你写的声明性代码,描述要检索的内容。

参考:HTTP://msdn.microsoft.com/en-us/library/bb397919.aspx

LINQ到实体 LINQ到实体提供语言集成查询(LINQ)支持,使开发人员能够编写使用Visual Basic或Visual C#对实体框架概念模型的查询。 对实体框架的查询由命令树查询,这对执行对象上下文表示。 LINQ到实体转换语言集成查询(LINQ)查询命令树查询,执行对实体框架的查询,并返回可由实体框架和LINQ都可以使用的对象。 以下是用于创建和执行的LINQ to Entities查询的过程:参考:http://msdn.microsoft.com/en-us/library/bb386964.aspx

Linq2Entities表示通过ADO.NET实体框架(数据库)数据查询

Linq2Objects代表内存中的数据(本地对象)查询。

分类:C# 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.295 (s). 10 q(s)