Это странно.
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 в имеет тип списка. Это также тип C.cidades. Вызов mgr.UpdateRegiao создает контекст, копирует содержимое в объекты внутри контекста и обновляет объекты. Некоторые из itens в ListN, возможно, произошли из контекста (из результата запроса)
Когда
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 пришли из базы данных? Если да, есть ли способ их отсоединить?