gpt4 book ai didi

c# - 无法通过将自己指定为父级来确定相关操作的有效顺序

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:25 25 4
gpt4 key购买 nike

当我尝试将自己指定为插入的父对象时出现以下错误。

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() 方法之后分配其 IdTeamParentId,像这样:

var team = new Team(....);

db.Teams.Add(team);

team.TeamParentId = team.Id;

db.SaveChanges();

我知道这看起来很复杂,但这是我能想到的唯一方法。希望对你有帮助

关于c# - 无法通过将自己指定为父级来确定相关操作的有效顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45763265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com