1

我有一个首先使用 EF5 数据库的多层应用程序 - ADO.NET 和 MVC4,当我尝试在没有 EF 的情况下加载一些属性时遇到问题。我的意思是说我有一个实体A,例如:

A
{
     public int id {set; get;}
     public string name {set; get;}
     public virtual ICollection<B> B { get; set; }
}

所以在某些情况下,我已经从另一个原因加载了 B 集合,我需要将它分配给 A

像一个简单的:

a.B = b;

这发生在我的业务逻辑层上,所以 dbcontext 很久以前就被处理了

但是当我尝试访问 B 属性时,我只收到System.ObjectDisposedException一条错误消息,上面写着

任何知道如何解决这个问题?

ObjectContext 实例已被释放,不能再用于需要连接的操作。

4

1 回答 1

1

发生这种情况是因为该对象是在同时具有和A的上下文中加载的。因此,该对象是一个代理对象,在访问其子集合时仍会尝试触发延迟加载。ProxyCreationEnabled = trueLazyLoadingEnabled = trueA

因此,您可以禁用这些属性之一以防止在处理上下文后延迟加载。或者,或另外,您可以使用以下方法加载aB集合Include

a = context.As.Include(a => a.B).Single(...);
于 2013-11-06T11:23:17.040 回答