[英]insert into database many to many relationship .net core 3.1
我正在嘗試建立多對多的關系。 我為表格制作了以下課程。
public class Class {
public int Id { get; set; }
public string ClassName { get; set; }
public string ClassRequirements { get; set; }
public int HitDie { get; set; }
public IList<ClassRace> ClassRaces { get; set; }
}
public class Race {
public int RaceID { get; set; }
public string RaceName { get; set; }
public string RaceFeatures { get; set; }
public List<ClassRace> ClassRaces { get; set; }
}
public class ClassRace {
public int ClassID { get; set; }
public Class Class { get; set; }
public int RaceID { get; set; }
public Race Race { get; set; }
}
我在第一次運行程序時初始化表中的值。
var cl1 = new Class() {
ClassName = "Barbarian",
ClassRequirements = "13 Strength",
HitDie = 12,
ClassRaces = new List<ClassRace>()
};
Race rc1 = new Race() {
RaceName = "Elf",
RaceFeatures = "DarkVision. +2 Wisdom",
ClassRaces = new List<ClassRace>()
};
var cr = new ClassRace {
Class = cl1,
Race = rc1
};
rc0.ClassRaces.Add(cr);
cl1.ClassRaces.Add(cr);
在我的DbContext
,我有這行代碼,我相信它會自動在表中填寫我的ClassID
和RaceId
但是當我運行程序時,這個表將是空的,並且兩行都是NULL
。
public DbSet<Race> Races { get; set; }
public DbSet<Class> Classes { get; set; }
public DbSet<ClassRace> ClassRaces { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<ClassRace>().
HasKey(cr => new { cr.ClassID, cr.RaceID });
modelBuilder.Entity<ClassRace>().
HasOne(x => x.Race).
WithMany(x => x.ClassRaces).
HasForeignKey(x => x.RaceID).
OnDelete(DeleteBehavior.Restrict).
IsRequired();
modelBuilder.Entity<ClassRace>().
HasOne(x => x.Class).
WithMany(x => x.ClassRaces).
HasForeignKey(x => x.ClassID).
OnDelete(DeleteBehavior.Restrict).
IsRequired();
}
為什么我的ClassRaces
表是NULL
。 我該如何解決?
我建議您在操作插入時設置 Id 值(特別關注您在 RaceClass 模型中所做的事情):
將為您提供 OnModelCreating 方法中的數據播種示例(您也可以執行循環,因為我看到了您的評論之一):
modelBuilder.Entity<Class>().HasData(new Class
{
Id = 1,
ClassName = "Barbarian",
ClassRequirements = "13 Strength",
HitDie = 12
});
modelBuilder.Entity<Race>().HasData(new Race
{
Id = 1,
RaceName = "Elf",
RaceFeatures = "DarkVision. +2 Wisdom"
});
modelBuilder.Entity<ClassRace >().HasData(new ClassRace
{
Id = 1,
RaceId = 1,
ClassId= 1
});
在方法底部調用 _context.SaveChanges()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.