|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果英语好,口才好,加上女孩子的优势说不定有机会进去做做别的工具)StuSmith比来在博客贴出文章宣称:“LINQ-to-Entities依附于你之前实行的查询来前往分歧的了局”。假如情形失实,如许会使得利用EntityFramework比本来还要坚苦。我们和ADO.NET团队的ElisaFlasko交换,找出事实产生甚么事变?这类情形实践上是对编码部分的曲解。他们编写运转的第二部分查询(varorder部分),实践上是一个LINQtoObject查询,而非LINQtoEntities(或LINQtoSQL)查询。该LINQtoObject查询是查询之前由第一部分查询(varalice部分)导进到内存的数据,。
如今发生分歧了局的缘故原由,就是LINQtoSQL撑持提早加载,而EntityFramework第一个版本其实不撑持。以是假如你检察第一部分查询,该代码仅把Customer实体引进到内存(在LINQtoSQL和LINQtoEntities中切实其实云云)。但是,在第二部分查询(Orders)中,代码实验会见相干的Orders实体。如今提早加载接着第二次会见数据库来猎取这些信息,但是在EntityFramework中的显式加载意味着,他要对数据库“难以想象地”举行分外会见。因为Orders不在内存中,在你对LINQtoEntities查询了局实行LINQtoObjects查询的时分,Orders则不成用。但是,在foreach轮回(代码出格挪用了data.Orders-会见该高低文并在数据库中查询一切Orders)以后,该Orders就在内存中,因而LINQtoObjects便可基于它们来查询。
也就是说,我们让你可以在EntityFramework的第二版中开启提早加载,但是,它在默许情形下仍将封闭。来由是为了确保开辟者不会心外埠赶上功能成绩的情形,即数据库被会见N+1次,这可使用提早加载来减缓,而无需开辟职员必需明白地告知该框架,即他们无需担心提早加载的功能成绩。 以是这是一个主要的计划成绩抑或只是一个培训成绩?
检察英文原文:DoesLINQ-to-Entitiesreallyreturndifferentresultsdependingonpreviousqueries?
本文出自:http://www.infoq.com/cn/news/2008/12/Lazy-Loading
我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。 |
|