[英]Is This Data Model Meeting My Requirements?
我正在创建一个类似于“曲棍球联盟”的Razor Pages应用程序。 由于我仍在掌握外键/主键的概念,因此不确定是否正确设置了数据模型。 尝试在迁移后更新数据库后,出现以下错误,导致我认为我没有正确设置它们:
在表“ Team”上引入FOREIGN KEY约束“ FK_Team_Division_DivisionID”可能会导致循环或多个级联路径。 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。
基于这三个实体,我显然做错了吗?
public class Team
{
public int ID { get; set; }
public int? CoachID { get; set; }
public int? DivisionID { get; set; }
public int? ConferenceID { get; set; }
[Display(Name = "Team")]
public string TeamName { get; set; }
[Display(Name = "Location")]
public string TeamLocation { get; set; }
public Coach Coach { get; set; }
public Division Division { get; set; }
public Conference Conference { get; set; }
public ICollection<Player> Players { get; set; }
}
public class Conference
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID { get; set; }
[Display(Name = "Conference")]
public string ConferenceName { get; set; }
public ICollection<Division> Divisions { get; set; }
public ICollection<Team> Teams { get; set; }
}
public class Division
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID { get; set; }
public int ConferenceID { get; set; }
[Display(Name = "Division")]
public string DivisionName { get; set; }
public Conference Conference { get; set; }
public ICollection<Team> Teams { get; set; }
}
我的想法是每个Team
都属于一个Conference
和一个Division
。 一个Division
可以有许多Teams
,而一个Conference
可以有许多Divisions
。
您遇到的问题是SQL Server不知道如何处理具有多个父项的项目的Delete
。 您需要一点帮助。 选择要删除Team
的路线,例如:
Conference --> Division --> Team
然后,您必须确定不希望其删除的路由,例如:
Conference --> Team
确定不删除哪些路由后,可以在上下文的OnModelCreating(DbModelBuilder modelBuilder)
方法中指定它
modelBuilder.Entity<Conference>()
.HasRequired(x => x.Team)
.WithMany()
.WillCascadeOnDelete(false);
编辑
可以肯定的是,我在上面已经做到了,请尝试以下操作:
modelBuilder.Entity<Team>()
.HasRequired(x => x.Conference)
.WithMany()
.WillCascadeOnDelete(false);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.