EF 4.0 - 创建了两个不同的新 ObjectContext 实例,但它们共享相同的引用
我的模型是在自己的 DLL 中实现的,生成的 App.config 也放置在其中。应用程序本身“没有”App.config。没有初始化上下文(仅在 DLL 中直接访问)。我收到一个错误,通过将连接字符串复制到手动生成的新应用程序 App.config 中解决了该错误。
这个案例对我来说有点多余,我决定通过自己编写来获取 EntityConnection。现在是有问题的代码,它适用于冗余版本,而不适用于自己的实现。
public Discount GetDiscountByOffer(int discountId)
{
// Own implementation, redundant one without passed connection parameter
using (context2 = new SalesEntities(Configuration.EntityConnection))
{
return context2.Discounts.Single(d => d.ID == discountId);
}
}
在另一个类中,我调用此方法并将其分配给客户。我也在这里创建了一个新的上下文。代码简化:
// Own implementation, redundant one without passed connection parameter
using (context1 = new SalesEntities(Configuration.EntityConnection))
{
var customer = GetCustomer(10004);
customer.ActualDiscount = GetDiscountByOffer(5); // here is the call and
// the error
}
错误 ahows ObjectContext (context1) 已关闭,我不明白。 context2 和 context1 有什么关系?我敢打赌两者共享相同的引用,但这对我来说不合逻辑。每次传递参数时,EntityConnection 也会被初始化。
在冗余版本中,此代码有效。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从 context2 获取对象,将其附加到 context1,然后设置客户的属性。
MSDN 解释:
http://msdn.microsoft。 com/en-us/library/system.data.objects.objectcontext.attach.aspx
阅读下面的“使用多个 ObjectContext 实例的问题”:
http://dotnetslackers.com/articles/ado_net/Managing-Entity-Framework-ObjectContext-lifespan-and-scope-in-n-layered-ASP-NET-applications.aspx#the-problems-处理多个对象上下文实例
Get the object from context2, attach it to context1, then set the customer's property.
MSDN explanation:
http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.attach.aspx
Read 'The problems of working with multiple ObjectContext instances' below:
http://dotnetslackers.com/articles/ado_net/Managing-Entity-Framework-ObjectContext-lifespan-and-scope-in-n-layered-ASP-NET-applications.aspx#the-problems-of-working-with-multiple-objectcontext-instances