1

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「子」の 1 つに有効な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);

私の流暢なマッピングとエンティティクラスは問題ありません。それは、私が何か間違ったことをしているだけで、私が疑う更新の順序で、何の手がかりもありません.

4

0 に答える 0