问题描述
我有一个实体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 (将#修改为@)