我正在使用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。