【发布时间】:2013-09-20 01:15:57
【问题描述】:
如何告诉 EF4 DbContext 清除其内部缓存/状态?
我有一个数据库更新程序,它在事务中通过 EF4 对各种表执行大量插入操作。我发现随着更新的进行,对通用权限表的插入会变得越来越慢。
存在以下限制:
1) 一切都必须发生在单个(巨型)事务中。
2) 不能引入对 MSDTC 的依赖 - 所以我不能进行交叉连接事务。
3) 似乎无法为已打开的 SqlConnection 打开新的 DbContext - 遇到“EntityConnection 只能通过关闭的 DbConnection 构造”错误。 (请注意,我已经在多个 DbContext 之间共享一个 SqlConnection,但只有在它们全部初始化后才打开连接)
鉴于这些限制,我无法为每个工作块创建一个新的 DbContext,因为它会破坏事务。
我已经满足了这些功能限制,但性能很差。我怀疑 DbContext 正在努力处理插入到 DbSet 中的数据量。
如何告诉 DbContext 重置其内部缓存(例如,我最近插入的行并且不再关心)?
【问题讨论】:
标签: c# entity-framework dbcontext