【发布时间】:2018-09-28 02:00:16
【问题描述】:
我试图让一个模型有两个对另一个模型的引用。
我已经研究过这个错误,但看到了与以前的 .Net Core 版本相关的建议。
下面是模型
public class Match
{
public int ID { get; set; }
public DateTime MatchDateTime
{ get; set; }
public int LocationID { get; set; }
public int GroupID { get; set; }
public int HomeTeamScore { get; set; }
public int AwayTeamScore { get; set; }
[Required]
public int HomeTeamID { get; set; }
public int AwayTeamID { get; set; }
public Location Location { get; set; }
public Group Group { get; set; }
[Required]
[ForeignKey("HomeTeamID")]
public Team HomeTeam { get; set; }
[ForeignKey("AwayTeamID")]
public Team AwayTeam { get; set; }
}
在运行迁移时,我收到此错误:
在表“Matches”上引入 FOREIGN KEY 约束“FK_Matches_Teams_AwayTeamID”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
【问题讨论】:
-
您能否向我们提供
OnModelCreating方法的内容(因为您使用的是 Code First 迁移)?我认为您在modelBuilder.Entity<Match>关系中存在问题,可能会多次声明,导致多个循环或级联路径。 -
将你的 fk onelete 设置为限制而不是级联
-
该错误与任何 .Net 版本无关,它是一个 SQL Server 错误,很清楚地告诉您这是错误的。
Team的两个 FK 不能都具有级联删除。 -
@TetsuyaYamamoto:我的 OnModelCreating() 函数中没有代码
-
@Mardoxx:我不确定我应该使用什么 DataAnnotation 来实现这一点。
标签: asp.net entity-framework asp.net-core .net-core