【发布时间】:2011-10-06 17:13:06
【问题描述】:
我一直在尝试调试它并以不同的方式表达我想要做的事情,但没有运气。我对实体框架知之甚少,而且我从另一个不再存在的开发人员那里继承了这段代码,所以我对模型知之甚少。也许有人至少可以让我指出正确的方向。这是我的代码:
//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
我简直无法理解怎么会有两种情况?我在代码中的每个地方都使用“上下文”。实体框架如何让简单地将单行添加到我的数据库中变得如此困难?
【问题讨论】:
标签: c# .net asp.net entity-framework