zoukankan      html  css  js  c++  java
  • EntityFramework 贪婪加载与延迟加载以及资源回收

    • EntityFramework的资源回收

    1) Using 内包含Entity的上下文关系,对俩表做Add操作,最好可以直接写一个 entity.SaveChanges(); 完成两张表的同时add操作,如果操作失败,回滚。

    using (var entity = new ViaNetEntities())
    {
    var model = new VisitLog();
    model.Title = "Result记录日志";
    model.AddTime = DateTime.Now;
    entity.VisitLogs.Add(model);
    entity.User.Add(model2);
    entity.SaveChanges(); }

    2)采用仓储模式或者DDD模式的

    item.BL_InvoiceDetail = detail;
    SAPActualItemService.AddWithoutCommit(item);
    
    SAPActualItemService.Commit();
    Commit():UnitOfWork.Commit(); 相当于这部操作。
    用sql profiler工具追踪。
    优化之前:

    优化之后:

     

    执行完成后,一次性提交的好处,显而易见。
    • EntityFramework 贪婪加载,用EF把需要的数据一次性加载出来。
    如:
    using (var entity = new ViaNetEntities())
    {
    
    entity.VisitLogs.Include("LogDetails");
    }

    主要看Include 这个方法。

    • 延迟加载:需要用到数据的时候才进行加载。平时我们用EF 也主要是用的延迟加载。


  • 相关阅读:
    HDU5586 最大连续和 xingxing在努力
    HDU5587 递推式+二分 xingxing在努力
    HDU2639 第k小01背包 xingxing在努力
    Java面向对象之继承
    Java面向对象之封装
    Java面向对象之封装
    Java流程控制语句
    Java流程控制语句
    Java运算符
    Java运算符
  • 原文地址:https://www.cnblogs.com/sunShineJing/p/6993847.html
Copyright © 2011-2022 走看看