这很奇怪。
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来自数据库吗?如果是这样,有没有办法将它们分开?
答案 0 :(得分:0)
好的,这就是Linq的方式,我想。