• 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 贪婪加载与延迟加载以及资源回收

优化之后:

 EntityFramework 贪婪加载与延迟加载以及资源回收

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

entity.VisitLogs.Include("LogDetails");
}

主要看Include 这个方法。

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

 



相关文章:

  • 2021-08-03
  • 2021-06-19
  • 2022-12-23
  • 2022-12-23
  • 2021-10-11
  • 2021-06-20
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-20
  • 2021-11-29
  • 2021-07-06
  • 2022-12-23
  • 2022-01-14
相关资源
相似解决方案