尝试通过EF Core将数据库更新到MSSQLServer时,出现Introducing FOREIGN KEY constraint 'FK_ExchangeHours_Times_StartTimeId' on table 'ExchangeHours' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
错误。问题出在ExchangeHour类中,该类引用了Time类。
课程:
public class ExchangeHour
{
...
public int StartTimeId { get; set; }
public Time StartTime { get; set; }
public int EndTimeId { get; set; }
public Time EndTime { get; set; }
...
}
public class Time
{
public int TimeId { get; set; }
public int Hours { get; set; }
public int Minutes { get; set; }
public int Seconds { get; set; }
}
有关ExhangeHours的迁移脚本。
migrationBuilder.CreateTable(
name: "ExchangeHours",
columns: table => new
{
ExchangeId = table.Column<string>(nullable: false),
DayOfWeek = table.Column<int>(nullable: false),
StartTimeId = table.Column<int>(nullable: false),
EndTimeId = table.Column<int>(nullable: false),
HourTypeId = table.Column<int>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ExchangeHours", x => new { x.ExchangeId, x.DayOfWeek });
table.ForeignKey(
name: "FK_ExchangeHours_Times_EndTimeId",
column: x => x.EndTimeId,
principalTable: "Times",
principalColumn: "TimeId",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ExchangeHours_Exchanges_ExchangeId",
column: x => x.ExchangeId,
principalTable: "Exchanges",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ExchangeHours_ExchangeHourTypes_HourTypeId",
column: x => x.HourTypeId,
principalTable: "ExchangeHourTypes",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ExchangeHours_Times_StartTimeId",
column: x => x.StartTimeId,
principalTable: "Times",
principalColumn: "TimeId",
onDelete: ReferentialAction.Cascade);
});
当ExchangeHour将被删除时,我想删除两个时间参考,因为我不再需要它们了,所以我要删除上的级联。但是,如果我删除对Time类的引用,则update-migrations没有错误。我看不到任何循环或任何错误,因此我不确定,为什么不能使用此功能。我没有发现任何限制,一个类不能多次引用另一个类。任何想法为什么会引发此错误?