1

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

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

4

1 回答 1

1

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

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

实际执行查询的成本相对较低。请参阅此处了解更多信息。

一般情况下,建议使用 EF 批量插入的特殊策略。见这里

于 2014-11-19T10:33:55.280 回答