c# - 实体对象不能被 IEntityChangeTracker 的多个实例引用

标签 c# asp.net entity-framework caching

我使用 EF 作为 ORM。

我在每次请求时都处理 objectContext

我将实体保存在缓存层中,因为我的服务有大量流量。

对于从缓存中获取的某些实体,我有时会收到错误 objectContext already disposed

我已将此代码添加到从缓存中检索到的元素

if (maMDBEntities.Entry(group).State == EntityState.Detached)
{
    maMDBEntities.Groups.Attach(group);
}

但现在我有时会收到此错误:

An entity object cannot be referenced by multiple instances of IEntityChangeTracker.

使用 Attach() 从一开始就是一个错误的解决方案吗?

最佳答案

正如我们在您的另一个问题 (will EF::attach(entity) will solve objectContext is already desposed?) 中告诉您的那样,您必须先分离实体,然后再将其附加到另一个上下文!

如果 maMDBEntities 是一个新的上下文(不是那个加载数据的上下文),从这个上下文的角度来看,EntityState 不是“附加的”。所以你的支票是不够的。

maMDBEntities.Entry(group).State == EntityState.Detached 对于未加载实体的上下文始终为真。

关于c# - 实体对象不能被 IEntityChangeTracker 的多个实例引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14725831/

相关文章:

c# - 通过 Microsoft Exchange Server 发送电子邮件

c# - 向多个文本框添加属性

c# - ASP.NET 5 中的路由前缀

c# - 在路径中使用 "~"解析为 C :\

asp.net - span innertext 甚至不在同一页面中分配

c# - Visual Studio 2012 在构建时崩溃

c# - 如何让浏览器从自定义协议(protocol)打开文件?

c# - 在 web.config 之外存储配置设置的最佳方式

c# - 为什么 Add-Migration 有时会创建重复的迁移?

c# - 从 EntityFramework 的 `DbContext` 获取数据库类型