当我尝试将自己指定为插入的父级时,我收到以下错误。
无法确定相关操作的有效排序。由于外键约束,模型要求或存储生成的值,可能存在依赖关系。
代码如下。我以为我能做到这一点,但我猜不是。我怎样才能在插页上做到这一点?
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);
我该如何做到这一点?
答案 0 :(得分:1)
看起来你正在设置你正在创建一个循环的团队的方式,这是不可能的&#34;到&#34;保存&#34;由EF。
如果您询问如何实际完成此操作,那么您必须实际保存没有父级的Team
,并且SaveChanges()
方法将其Id
分配给{ {1}},像这样:
TeamParentId
我知道这看起来很复杂,但这是我能想到的唯一方法。希望这可以帮助你
答案 1 :(得分:0)
1)转到* .tt POCO生成器文件
2)查找文本“ ForeignKeyFilter”
3)设置
ForeignKeyFilter = (ForeignKey fk) =>
{
if (fk.FkTableName == fk.PkTableName)
return null;
return fk;
};
所引用的记录和集合不会生成为结果类型(因此不能在代码中使用)。外键项仍然在那里。 INSERT就可以了。