Entity Framework Core 7, один ко многим вызывает множественные каскадные пути, никогда не было проблем в более старой версии. Что я сейчас делаю не так?
Я переписываю старое веб-приложение .NET Core/EF Core 2 в .NET/EF Core 7.
У меня есть следующие два объекта, которые, насколько я помню, отлично работали в старом приложении, но теперь я получаю сообщение об ошибке.
Microsoft.Data.SqlClient.SqlException (0x80131904): введение ограничения FOREIGN KEY «FK_ReleaseDates_Sections_SectionID» в таблице «ReleaseDates» может вызвать циклы или несколько каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY.
Я не уверен, всегда ли я делал что-то неправильно в сущностях и исправлял ли это где-то еще, чего я не вижу, или если что-то изменилось за эти годы, и теперь я делаю это совершенно неправильно.
public class Section
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Title { get; set; }
[Column(TypeName = "varchar(15)")]
public string Abbreviation { get; set; }
public int TypeID { get; set; }
public int? LogoFileID { get; set; }
public string Synopsis { get; set; }
public ICollection<ReleaseDate> ReleaseDates { get; set; }
[ForeignKey("LogoFileID")]
public SiteFile LogoFile { get; set; }
[ForeignKey("TypeID")]
public SectionType Type { get; set; }
}
public class SectionType
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Name { get; set; }
}
public class ReleaseDate
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Name { get; set; }
public int VersionNumber { get; set; }
public int TypeID { get; set; }
public DateTime? Released { get; set; }
public string Platform { get; set; }
public string Region { get; set; }
public string Note { get; set; }
public int SectionID { get; set; }
[ForeignKey("SectionID")]
public Section Section { get; set; }
[ForeignKey("TypeID")]
public SectionType Type { get; set; }
}
Должен ли я исправлять это с помощью FluentAPI?Cascade
команду или я что-то напортачил в сущностях, которые я должен делать?