Dotnet Entity Framework 三个实体之间的关系

问题描述

我有一个实体A,它有很多一个列表)实体B实体B有很多 实体C(我也想有一个单独的C实例,只有一个,它代表获胜者,但我可以通过保留它的ID来解决这个问题,所以没有必要).

如何连接它们之间的外键?

我如何通过删除 A 来强制删除所有 B,以及所有依赖于它的 C?(更简单的方法 -> 它们被链接并依赖于前一个

当我删除所有的 As 和 B 时,我如何保留 Cs?(更难的方法 -> B 依赖于 A,但 C 不依赖于任何一个

实体 A:

namespace Server.Models
{
    [Table("Tournament")]
    public class Tournament
    {
        [Key]
        [Column("ID")]
        public int ID { get; set; }
        [Column("Name")]
        public string Name { get; set; }
        [Column("Max Number Of disciplines")]
        public int Maxdisc { get; set; }
        public virtual List<discipline> disciplines { get; set; }
    }
}

实体 B:

namespace Server.Models
{
    [Table("discipline")]
    public class discipline
    {
        [Key]
        [Column("ID")]
        public int ID { get; set; }
        [Column("Name")]
        public string Naziv { get; set; }
        [Column("Location")]
        public string Lokacija { get; set; }
        [Column("Max Number Of Contestants")]
        public int MaxContestants { get; set; }
        // [Column("Winner")]
        // [AllowNull]
        // public ContestantRef { get; set; } = default;
        [ForeignKey("Winner")]
        [AllowNull]
        public int WinnerID { get; set; } = default;
        [JsonIgnore]
        [Column("Tournament")]
        public Tournament TournamentRef { get; set; }
        [ForeignKey("Tournament")]
        public int TournamentID { get; set; }
        public virtual List<Contestant> Contestants { get; set; }
    }
}

实体 C:

namespace Server.Models
{
    [Table("Contestant")]
    public class Contestant
    {
        [Key]
        [Column("ID")]
        public int ID { get; set; }
        [Column("Name")]
        public string Name { get; set; }
        [Column("Surname")]
        public string Surname { get; set; }
        [Column("Speed")]
        public int Speed { get; set; }
        [Column("Rank")]
        public int Rank { get; set; }
        [Column("Position")]
        public int Position { get; set; }
        [Column("Selected")]
        public bool Selected { get; set; }
        [Column("Competing")]
        public bool Competing { get; set; }
        [JsonIgnore]
        [Column("discipline")]
        public discipline disciplineRef { get; set; }
        [ForeignKey("discipline")]
        public int disciplineID { get; set; }
        [JsonIgnore]
        [Column("Tournament")]
        public Tournament TournamentRef { get; set; }
        [ForeignKey("Tournament")]
        public int TournamentID { get; set; }
    }
}

OnModelCreating:

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Tournament>()
                .HasMany(t => t.disciplines)
                .WithOne(dsc => dsc.TournamentRef)
                .OnDelete(DeleteBehavior.Cascade);

            modelBuilder.Entity<discipline>()
            .HasMany(dsc => dsc.Contestants)
            .WithOne(uc => uc.disciplineRef)
            .OnDelete(DeleteBehavior.Cascade);

            base.OnModelCreating(modelBuilder);
        }

当前错误 On dotnet ef database update,in console

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)