Linq to sql 为什么这个对象需要DataContext?

Linq to sql 为什么这个对象需要DataContext?,linq-to-sql,Linq To Sql,这很奇怪 regiao C = new regiao(); C.Nome = textBoxNome.Text; C.Descricao = textBoxDescicao.Text; C.cidades.AddRange(ListaIN); mgrRegiao mgr = new mgrRegiao(); mgr.UpdateRegiao(C); C是Linq对象(由VS2008在dbml文件中生成的代码),该操作不在任何上下文中。中的ListaIN属于List类型。这也是C.cidades

这很奇怪

regiao C = new regiao();
C.Nome = textBoxNome.Text;
C.Descricao = textBoxDescicao.Text;
C.cidades.AddRange(ListaIN);
mgrRegiao mgr = new mgrRegiao();
mgr.UpdateRegiao(C);
C是Linq对象(由VS2008在dbml文件中生成的代码),该操作不在任何上下文中。中的ListaIN属于List类型。这也是C.cidades的类型。对mgr.UpdateRegiao的调用将创建一个上下文,将内容复制到上下文中的对象并更新对象。ListN中的某些iTen可能来自上下文(来自查询结果)

什么时候 C.cidades.AddRange(列表)

我得到一个例外

Cannot access a disposed object.
Object name: 'DataContext accessed after Dispose.'.
排队

regiao previousValue = this._regiao.Entity;
在为实体区域生成的代码中设置操作

[Association(Name="regiao_cidade", Storage="_regiao", ThisKey="IDRegiao",      IsForeignKey=true)]
    public regiao regiao
    {
        get
        {
            return this._regiao.Entity;
        }
        set
        {
            regiao previousValue = this._regiao.Entity;
            if (((previousValue != value) 
                        || (this._regiao.HasLoadedOrAssignedValue == false)))
            {
                this.SendPropertyChanging();
                if ((previousValue != null))
                {
                    this._regiao.Entity = null;
                    previousValue.cidades.Remove(this)


怎么了?对象C没有也从来没有上下文。为什么它需要一个上下文,我如何解决这个问题?是因为ListaIN中的一些iTen来自数据库吗?如果是这样,是否有办法将它们分离?

好的,我想这就是Linq的方式。

进一步的测试表明,尝试将项添加到C.cidades列表中会出现相同的错误,即使该项是在上下文之外创建的。好的。因此,不能将来自两个不同上下文的对象或具有上下文的对象与不具有上下文的对象混合。因此,我需要一种方法来分离与dbml文件中生成的代码一起工作的对象。为什么不再具有有效上下文的对象会保留此信息。你不会恢复任何惰性的初始化对象。无论如何,我能够“分离”对象并将它们逐个添加到C.cidades列表中。执行C.cidades.AddRange(ListaIN)仍然会生成错误。