Каков синтаксис для создания нескольких сущностей с помощью Entity Framework ModelBuilder? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь создать несколько дочерних объектов, которые являются родителями моего объекта 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; }
    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...