EF6,循环依赖givs DbPpdateException

时间:2016-06-29 10:08:48

标签: c# entity-framework-6 circular-dependency

我正在使用Entity Framwork 6,代码优先。

我有一个实体团队,其中包含成员列表,其中一个成员团队负责人

public class Team
{
    public virtual List<Member> Members { get; private set; }
    public virtual Member TeamLeader { get; private set; }

    public Team()
    {
        Members = new List<Member>();
    }

    public AddMember(Member member)
    {
        Members.Add(member);
    }

    public AddTeamLeader(Member teamLeader)
    {
        TeamLeader = teamLeader;
        AddMember(teamLeader);
    }
}

我想执行以下操作,但它会抛出DbUpdateException。

using(var uow = new UnitOfWork((new DataContext())))
{
    var team = new Team();
    team.AddMember(new Member("Adam"));
    team.AddTeamLeader(new Member("David"));

    uow.Teams.Add(team);
    uow.Complete();
}

这有效但不好看,有一天有人会写第一个版本..

using(var uow = new UnitOfWork((new DataContext())))
{
    var theTeamLeader = new Member("David");
    uow.Members.Add(theTeamLeader);
    uow.Complete();

    var team = new Team();
    team.AddMember(new Member("Adam"));
    team.AddTeamLeader(theTeamLeader);

    uow.Teams.Add(team);
    uow.Complete();
}

是否可以创建一个包含成员和领导者的完整团队,并将其保存到只有一个SaveChanges的数据库中?

成员表将拥有Team表的外键,Team表将具有成员表的外键,因此它是循环依赖项,因此我得到DbUpdateException。

0 个答案:

没有答案