Я пытаюсь создать несколько дочерних объектов, которые являются родителями моего объекта Person. Наконец-то я смог заставить его работать так, чтобы EF распознал, что отношение человека к ребенку - это один ко многим и что объект Person может владеть несколькими дочерними элементами. Я просто хотел бы знать, есть ли более эффективный синтаксис для создания нескольких дочерних элементов, чем тот, который я использую сейчас.
Как видите, я делаю отдельный вызов onModelBuilder.HasData для каждой сущности:
public class PersonContext : DbContext
{
public DbSet<Person> People { get; set; }
public PersonContext(DbContextOptions<PersonContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>().HasData(new
{
PersonId = 1,
FirstName = "Ron",
LastName = "Smith",
Age = 43
});
modelBuilder.Entity<Child>().HasData(
new
{
PersonId = 1,
ChildId = 1,
Age = 12,
LastName = "Martin",
FirstName = "Scott"
});
modelBuilder.Entity<Child>().HasData(
new
{
PersonId = 1,
ChildId = 2,
Age = 14,
LastName = "Martin",
FirstName = "Tim"
});
Кроме того, мне потребовалось время, чтобы заставить EF правильно сопоставить эту связь, с классом Person, владеющим несколькими дочерними элементами, я также включил свои классы Person и Child на случай, если кто-то знает лучший способ вывести это отношение к EF.
public class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public ICollection<Child> Children { get; set; }
}
public class Child
{
public int ChildId { get; set; }
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public Person Parent { get; set; }
}