如何解决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 举报,一经查实,本站将立刻删除。