【发布时间】:2020-04-27 07:26:57
【问题描述】:
有人知道如何禁用 EFCore 上的 AutoDetectChanges 吗?
我需要这样做,因为我必须在我的数据库中进行大量导入,并且无法在网络上找到信息。
试过了,还是不行:
_context.Configuration.AutoDetectChangesEnabled = false;
说配置不存在。
非常感谢。
【问题讨论】:
-
ORM NOT 用于大量导入。此外,您确实希望在导入时跟踪更改 - 否则 ORM 将不知道要插入什么
-
PS 你已经问过了。答案还是一样的。不要使用 ORM。您没有要映射到关系表的对象,您只有行。使用 ORM 插入 500K 行将导致性能下降大约 500-500K 倍,具体取决于 ORM 是否可以批量插入。
-
即使使用 EF Core 2.x 的 INSERT 批处理,每个批处理也不能包含超过 1K 的行,最多只能产生 500 个单独的 INSERT。 所有这些行都将被完全记录,从而导致大量 IO 并为每个 2GB 文件添加至少 2GB 的事务日志。另一方面,SqlBulkCopy 将使用最少的日志记录在单个流中发送所有行
标签: c# sql asp.net-core entity-framework-core record