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