为什么这个对象需要DataContext?

时间:2011-08-01 20:47:59

标签: 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对象(由db200文件中的VS2008生成的代码)操作超出任何上下文。 ListaIN in是List类型。这也是C.cidades的类型。对mgr.UpdateRegiao的调用会创建一个上下文,将内容复制到上下文中的对象并更新对象。 ListN中的一些itens可能来自Context(来自查询结果)

当     C.cidades.AddRange(ListaIN)

执行我得到异常

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

regiao previousValue = this._regiao.Entity;

在实体regiao set opeation的生成代码中。

[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中的一些itens来自数据库吗?如果是这样,有没有办法将它们分开?

1 个答案:

答案 0 :(得分:0)

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