【发布时间】:2021-04-19 01:17:30
【问题描述】:
这个问题很容易复制,但我不知道解决它的正确方法。
例如,您有一个 Team 类和一个 Game 类。每场比赛有两支球队。使用标准 OOTB EF 命名约定时,在运行 dotnet ef database update 时会遇到以下错误(dotnet ef migrations add 将正常运行)。
类:
public class Team
{
[Required]
public int TeamID { get; set; }
public string TeamName { get; set; }
}
public class Game
{
[Required]
public int GameID { get; set; }
public int Team1ID { get; set; }
public Team Team1 { get; set; }
public int Team2ID { get; set; }
public Team Team2 { get; set; }
}
确保将这两个类添加到您的 DbContext 中:
public virtual DbSet<Team> Teams { get; set; }
public virtual DbSet<Game> Games { get; set; }
我收到的错误是:
在表“Games”上引入 FOREIGN KEY 约束“FK_Games_Teams_Team2ID”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
我之前通过将 Team1ID 和 Team2ID 都设为空来解决此问题。但是,这显然不是合适的解决方案。如果没有两个团队,游戏就无法存在(在这种情况下......假设这是一场足球比赛)。此外,如果团队至少参与(或参与)了一场比赛,则该团队不应被删除。
解决此问题的适当方法是什么?而如果是指定ON DELETE NOT ACTION或者ON UPDATE NO ACTION,或者修改其他FOREIGN KEY约束,你是怎么做的呢?
【问题讨论】:
标签: c# entity-framework entity-framework-core