为什么SaveChanges方法会占用内存?

时间:2014-11-19 10:11:19

标签: entity-framework-4 savechanges memory-consumption

在准备大量(数千行)数据并通过Entity Framework将它们插入数据库时​​,创建Entity对象或内存中的对象图不占用那么多内存,但是当SaveChanges()时调用方法,在持续时间内,它会继续消耗大量内存,直到方法返回为止。

在导致此内存消耗的SaveChanges()调用期间,引擎盖下究竟发生了什么?

1 个答案:

答案 0 :(得分:1)

这取决于对象图的深度,图表越深,消耗的内存就越多。通常,在您致电SaveChanges后发生的成本更高的操作如下:

  • 为查询生成视图:在EF可以对模型执行查询之前,它必须生成一组本地查询视图才能访问数据库。对象图越复杂,视图就越复杂,尽管可以预先生成它们以提高性能。
  • 准备查询:EF组成查询命令,基于元数据等生成命令树。同样,成本随着查询复杂性的增加而增加。

实际执行查询的成本相对较低。有关详细信息,请参阅here

通常,建议使用特殊策略进行EF批量插入。请参阅here