Я некоторое время пытался отладить это и выразить то, что я хочу сделать по-разному, но мне не повезло.Я не очень много знаю об объектной структуре, и я унаследовал этот код от другого разработчика, которого больше нет, поэтому я не очень много знаю о модели.Возможно, кто-то может, по крайней мере, указать мне правильное направление.Вот мой код:
//Append note to project notes too
task.TPM_PROJECTVERSIONReference.Load();
TPM_PROJECTVERSIONNOTES newNote = new TPM_PROJECTVERSIONNOTES();
newNote.TS = System.DateTime.Now;
newNote.TPM_USER = SessionHandler.LoginUser;
newNote.NOTES = task.NOTES;
newNote.PROJECTID = this.ProjectId;
newNote.VERSIONID = this.VersionId;
task.TPM_PROJECTVERSION.TPM_PROJECTVERSIONNOTES.Add(newNote); //<-- Exception
У меня есть «задача», которая указывает на версию проекта, к которой он принадлежит.Эти проекты имеют кучу заметок.Я хочу добавить новую заметку в проект задачи.Однако в последней строке я получаю исключение:
System.InvalidOperationException не обработан кодом пользователя
Message = Невозможно определить связь между двумя объектами, поскольку они присоединены к разным объектам ObjectContext..
Source = System.Data.Entity
Кажется, это должно быть довольно просто.Разве это не правильный способ сделать это?Спасибо!
Редактировать:
Хорошо. Я удалил ВСЕ другой код из функции и создал совершенно новый контекст.Вот вся функция теперь от начала до конца:
//Append note to project notes too
using (TPMEntities context = new TPMEntities(General.EntityName()))
{
TPM_PROJECTVERSIONNOTES newNote = context.TPM_PROJECTVERSIONNOTES.CreateObject();
newNote.TS = System.DateTime.Now;
newNote.TPM_USER = SessionHandler.LoginUser;
newNote.NOTES = this.txtTaskNotes.Text;
TPM_PROJECTVERSION version = (from pv in context.TPM_PROJECTVERSION
where pv.PROJECTID == this.ProjectId && pv.VERSIONID == this.VersionId
select pv).First();
version.TPM_PROJECTVERSIONNOTES.Add(newNote);
context.SaveChanges();
}
Тем не менее, я получаю то же исключение:
System.InvalidOperationException was unhandled by user code
Message=The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects.
Source=System.Data.Entity
Я просто не могу понять, как может быть два контекста?Я использую «контекст» каждого места в коде.Как Entity Framework может так трудно добавить одну строку в мою базу данных?