我之前有一个更详细的问题,但我没有答案,我将以更简单的方式提出同样的问题:
I have an EF database with foreign key to another table.
我想UPDATE an ENTITY。但我需要这样,我将编写以下代码:
- 转到数据库并retrieve通过id获取Member,返回EF Member对象
- 对对象进行一些更改OUTSIDEEF 上下文
- 发送MODIFEDEF 成员转换为 Save 方法
- 在BL层中,保存方法使用上下文并保存更改。
1)
MemberManager currentMemberManager = new MemberManager();
Member NewMember = currentMemberManager.GetById(2);
2)
NewMember.FirstName = "NewFirstName";
NewMember.LanguageId = 1;
3)
currentMemberManager.Save(NewMember);
4)
public void Save2(Member newMember)
{
using (var Context = new NoxonEntities())
{
Member existingMember = Context.Member.First(c => c.Id == newMember.Id);
existingMember.FirstName = newMember.FirstName;
existingMember.Language = Context.Language.First(c => c.Id == newMember.LanguageId);
Context.SaveChanges();//In here I get the error below
}
}
对数据库的更改已成功提交,但出现错误
更新对象上下文时发生。 ObjectContext 可能是
处于不一致的状态。内部异常消息:参考
发生完整性约束违规:属性值
定义参考约束之间不一致
关系中的主要对象和从属对象。
Note:您可能建议发送不同的课程(例如:公共课程
MyMember) 具有所有必要的属性并且完全独立
来自EF。但这需要大量工作才能将所有 EF 对象转换为
进入我单独的班级。我对吗?
我希望有一种方法可以分离实体足够长的时间,以便我修改它并将值保存到数据库中。 (另外,我尝试了 Detach 方法,它根本不更新任何行)
我已经尝试解决这个问题几个小时了。
请帮助我更好地理解它,我真的需要一个解决方案。非常感谢任何有想法的人。