Я пытаюсь установить отношения «многие ко многим». Я создал следующие классы для таблиц.
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
I есть эта строка кода, которая, как я полагал, автоматически заполнит мои 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
. Как это исправить?