当前位置:  开发笔记 > 编程语言 > 正文

Linq2Sql:管理DataContext

如何解决《Linq2Sql:管理DataContext》经验,为你挑选了1个好方法。

在以下代码中不起作用

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,这样您就不需要传递引用?

什么



1> Aleris..:

他们的确意味着"这不受支持".未实现附加到从其他数据上下文获取的对象.

这个问题有很多解决方法,推荐的方法是序列化对象,但这并不容易,也不是一个干净的方法.

我发现最简单的方法是使用readonly DataContext来获取这样的对象:

        MyDataContext dataContext = new MyDataContext() 
        { 
            DeferredLoadingEnabled = false, 
            ObjectTrackingEnabled = false 
        };

从此上下文获取的对象可以附加到另一个上下文,但仅适用于某些场景.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有