使用导航属性与使用FK属性时,我做错了什么?

时间:2012-06-26 16:23:41

标签: entity-framework entity-framework-4 ef-code-first

当我在MVC4操作方法中使用以下代码时,我在其下面得到错误:

var role = _roleRepository.GetByName(model.RegistrationType.ToString());
var mr = new MemberRole();
mr.Priority = int.MaxValue;
mr.IsActive = true;
entity.MemberRoles.Add(mr);
role.MemberRoles.Add(mr);
_roleRepository.Update(role);
_memberRepository.Insert(entity);

发生了参照完整性约束违规:定义参照约束的属性值在关系中的主体和从属对象之间不一致。

我理解这一点,但需要移动和交付,尝试了以下方法,给出了错误。我认为我还无法更新角色,因为其中一个MemberRole'孩子'没有有效的Member引用(FK):

var role = _roleRepository.GetByName(model.RegistrationType.ToString());
var mr = new MemberRole();
mr.Priority = int.MaxValue;
mr.IsActive = true;
entity.MemberRoles.Add(mr);
role.MemberRoles.Add(mr);
//_roleRepository.Update(role);
_memberRepository.Insert(entity);

* INSERT语句与FOREIGN KEY约束FK_MemberRole_Role_RoleId冲突。冲突发生在数据库Educ8,表dbo.Role,列Id。*

我终于在MemberRole上仅使用FK属性取得了成功,如下所示,一切都很和平和好:

_memberRepository.Insert(entity);
var role = _roleRepository.GetByName(model.RegistrationType.ToString());
var mr = new MemberRole();
mr.MemberId = entity.Id;
mr.RoleId = role.Id;
mr.Priority = int.MaxValue;
mr.IsActive = true;
_memberRoleRepository.Insert(mr);

我的流利映射和实体类很好,只是我做错了什么,w.r.t。我怀疑的更新顺序,并不知道是什么。

0 个答案:

没有答案