学习EF之贪婪加载和延迟加载(1)】的更多相关文章

从暑假开始接触code first以来,一直感觉很好用,主要在于开发过程中以业务为中心可以随时修改数据模型生成数据库,还有一个原因就是查询起来很方便 这里找了一个以前database first的一段代码 public IEnumerable<Category> GetParAndGrand(int id) { var par = db.Category.Find(db.Category.Find(id).ParentId); if(par.Id == id) { par = null; }…
这篇文章将讨论查询结果的控制 在使用EF(Entity Framework)的过程中,很多时候我们会进行查询的操作,因此知道哪些数据会被加载到内存当中就至关重要.在多多的情况下,你可能并并不需要加载全部的数据,而是只要加载一部分的数据即可. 默认情况下,EF仅仅加载查询中涉及的实体,但是它支持两种特性来帮助你控制加载: 1.贪婪加载 2.延迟加载 1.贪婪加载 对于下面的查询: using (var context = new MyDomainContext()) { var orders =…
EntityFramework(EF)贪婪加载和延迟加载的选择和使用 贪婪加载:顾名思议就是把所有要加载的东西一 次性读取 1 using (var context = new MyDbContext()) 2 { 3 var orders = from o in context.Orders.Include("OrderDetails") select o; 4 } 当读取订单信息orders的时候,我们希望把订单的详细信息也读取出来,那么这里我们使用Include关键字将关联表也加…
贪婪加载:顾名思议就是把所有要加载的东西一 次性读取 1 using (var context = new MyDbContext()) 2 { 3 var orders = from o in context.Orders.Include("OrderDetails") select o; 4 } 当读取订单信息orders的时候,我们希望把订单的详细信息也读取出来,那么这里我们使用Include关键字将关联表也加载进 来. 延迟加载:即当我们需要用到的时候才进行加载(读取) 当我们…
原谅:http://www.weixq.cn/Article/Detail/906 贪婪加载:顾名思议就是把所有要加载的东西一 次性读取 using (var context = new MyDbContext()) { var orders = from o in context.Orders.Include("OrderDetails") select o; } 当读取订单信息orders的时候,我们希望把订单的详细信息也读取出来,那么这里我们使用Include关键字将关联表也加载…
在上一章中,我们使用了Linq对Entity Framework进行了一个查询,但是通过学习我们却发现了懒加载给我来的性能上的开销是很到的,尤其是在循环中,如果数据量不是很多的情况下还可以接受,如果数据量一旦大气来,那么这个效率则是影响非常大的.那该怎么办呢?其实在Entity Framwork中,除了提供了懒加载技术还提供了一个“贪婪加载”.那么什么是贪婪加载呢?从名字上看,就是非常的粗鲁的,一次性的吧相关的数据全部查询出来,虽然在性能上说还是有点影响的,但是比起在循环中使用懒加载要强了不少了…
默认情况下,EF4.1是只查询到涉及到的数据对象,但是EF4.1支持两种方法进行控制其加载: 1.贪婪加载 2.延迟加载 使用的表还是上次使用的Order 和 OrderDetails两张表来举例说明 1.贪婪加载 看下面一段代码: var orders = from o in db.Orders.Include("OrderDetails") where o.CustormName == "xiaoxiao" select o; 我们可以 直接Tostring()…
EntityFramework的资源回收 1) Using 内包含Entity的上下文关系,对俩表做Add操作,最好可以直接写一个 entity.SaveChanges(); 完成两张表的同时add操作,如果操作失败,回滚. using (var entity = new ViaNetEntities()) { var model = new VisitLog(); model.Title = "Result记录日志"; model.AddTime = DateTime.Now; en…
这篇文章将讨论查询结果的加载控制. EF4.1 允许控制对象之间的关系,当我们进行查询的时候,哪些关系的数据将会被加载到内存呢?所有相关的对象都需要吗?在一些场合可能有意义,例如,当查询的实体仅仅拥有一个相关的子实体,但是,多数情况下,你可能只需要加载部分数据,或者你喜欢的话,加载更多的数据. 默认情况下, EF4.1 仅仅加载查询中涉及的实体,但是它支持两种特性来帮助你控制加载: 贪婪加载 延迟加载 贪婪加载 对于下面的查询 using (var context =new MyDomainCo…
通过昨天对EF贪婪加载和延迟加载的学习,不难发现,延迟加载还是很好用的,但是问题也就来了,有的时候我们只需要加载一个实体,不需要和他相关的外部实体,这时候我们来看看EF延迟加载时怎么作用的吧 打开profiler 在Main函数入口处写一个查询,在Console.Read();处打一个断点 static void Main(string[] args) { var context = new EFDbContext(); var user = context.Users.FirstOrDefau…