繁体   English   中英

该数据模型符合我的要求吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM