У меня есть две таблицы, которые связаны n-n
.И у меня есть метод, который берет один объект и сохраняет.
public int Save(Table1 element)
{
using (var database = new Entities())
{
if (element.ID == 0)
{
database.Table1.AddObject(element);
}
else
{
database.Attach(element); //
database.ObjectStateManager.GetObjectStateEntry(element).SetModified();
database.Refresh(RefreshMode.ClientWins, element);
}
return database.SaveChanges();
}
}
Когда я не пытаюсь изменить obj1.Table2
, он присоединяется и успешно сохраняет.Но если я пытаюсь изменить это EntityCollection
element.Table2.Add(tb2);
и сохранить, я получаю следующую ошибку:
Объект с временным значением EntityKey не может быть присоединен к объектуcontext.
в строке: database.Attach(element);
Как это исправить?
База данных:
Table 1 Table 2
ID | Name ID | Name
--------- -------------------
1 | One 1 | Related to One
2 | Two 2 | Related to One
3 | Three
Table 3
Tb1 | Tb2
---------
// 1 | 1
// 1 | 2
СозданиеTable1
объект:
var element = GetTable1Obj(1);
element.Table2.Add(GetTable2Obj(1)); // GetTable2Obj uses a separated context
element.Table2.Add(GetTable2Obj(2)); // like Save method to return the object
provider.Save(element); // Method above