当我尝试将自己指定为插入的父对象时出现以下错误。
Unable to determine a valid ordering for dependent operations. Dependencies may exist due to foreign key constraints, model requirements, or store-generated values.
代码如下。我以为我可以做到这一点,但我想我做不到。我怎样才能在插入件上执行此操作?
public class Team {
public int? TeamParentId { get; set; }
[ForeignKey("TeamParentId")]
public virtual Team TeamParent { get; set; }
public virtual ICollection<Team> Teams { get; set; }
}
错误发生的地方
divisionTeam.Team.TeamParent = divisionTeam.Team;
if (divisionTeam.Id == 0)
{
_divisionTeamsRepository.Add(divisionTeam);
}
UnitOfWork.Commit();
DataContext.cs
modelBuilder.Entity<Team>()
.HasOptional(p => p.TeamParent)
.WithMany(p => p.Teams)
.HasForeignKey(q => q.TeamParentId);
我怎样才能做到这一点?
最佳答案
似乎您设置团队的方式正在创建一个循环,EF“不可能”“保存”该循环。
如果您询问如何实际完成此操作,那么您必须实际保存没有父级的 Team
并在 SaveChanges()
方法之后分配其 Id
到 TeamParentId
,像这样:
var team = new Team(....);
db.Teams.Add(team);
team.TeamParentId = team.Id;
db.SaveChanges();
我知道这看起来很复杂,但这是我能想到的唯一方法。希望对你有帮助
关于c# - 无法通过将自己指定为父级来确定相关操作的有效顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45763265/