分类

链接

2012 年 1 月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > .NET > 正文
共享办公室出租
Linq to EF 与Linq to Object
.NET 暂无评论 阅读(2,991)

我们首先来看这段代码:(注意:Linq代码里是把内存中的数据代码,也就是Linq to object放在join前面,数据库的数据代码放在join后面)

  1. List<MyObject> objectList = new List<MyObject>();  
  2. objectList.Add(new MyObject { Identity = 1, Name = "Jack", Age = 30 });  
  3. objectList.Add(new MyObject { Identity = 2, Name = "Sam", Age = 28 });  
  4. objectList.Add(new MyObject { Identity = 3, Name = "Lucy", Age = 23 });  
  5.   
  6. EntityRepository repository = new EntityRepository();  
  7. DbSet<Entity> entitySet = repository.Context.Set<Entity>();  
  8.   
  9. var objectNames = (from ob in objectList  
  10.                    join en in entitySet  
  11.                    on ob.Identity equals en.SID  
  12.                    select ob.Name).ToList();  

Entity是数据库表,有一个bigint型,名为SID字段,其他俩个为Name和Notes。上面的代码中是把Linq to Object放在前面,Linq to Entity 放在join中,编译运行顺利。

实际的查询数据库的语句为:

  1. SELECT   
  2. [Extent1].[SID] AS [SID],   
  3. [Extent1].[NameAS [Name],   
  4. [Extent1].[Notes] AS [Notes]  
  5. FROM [dbo].[Entity] AS [Extent1]  

这里是整表查询。(可以打开Sql Server 2008 R2-->Performance Tools-->SQL Server Profiler, 来跟踪此语句)。

如果把以上代码改成select en.Name,仍然是整表查询。

如果是设计两个数据库表的查询,且最后是select 表中的某一列,则不可能是整表查询,而是单独查询了某一列;而这里把entity和object放在一起,就会涉及整表查询。此乃两者混合使用的第一弊端。

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:Linq to EF 与Linq to Object | Bruce's Blog

发表评论

留言无头像?