在以下代码中不起作用
public void Foo() { CompanyDataContext db = new CompanyDataContext(); Client client = (select c from db.Clients ....).Single(); Bar(client); } public void Bar(Client client) { CompanyDataContext db = new CompanyDataContext(); db.Client.Attach(client); client.SomeValue = "foo"; db.SubmitChanges(); }
这不起作用,我收到错误信息."已经尝试附加或添加一个非新的实体,可能是从另一个DataContext加载的.这是不受支持的."
如何在整个应用程序中使用DataContexts,这样您就不需要传递引用?
什么
他们的确意味着"这不受支持".未实现附加到从其他数据上下文获取的对象.
这个问题有很多解决方法,推荐的方法是序列化对象,但这并不容易,也不是一个干净的方法.
我发现最简单的方法是使用readonly DataContext来获取这样的对象:
MyDataContext dataContext = new MyDataContext() { DeferredLoadingEnabled = false, ObjectTrackingEnabled = false };
从此上下文获取的对象可以附加到另一个上下文,但仅适用于某些场景.