База данных Seed Many-To-Many в C# и EF Core - PullRequest
0 голосов
/ 13 июля 2020

Я хотел бы заполнить свою базу данных EF Core, но заполнение соединительной таблицы для отношения «многие ко многим» не работает.

У меня есть три модели:

 public class Droid
    {
        public int DroidId { get; set; }
        public string DroidName { get; set; }
    }

  public class Colors
    {

        public int ColorID { get; set; }
        public string Color { get; set; }
    }

public class DroidColors
    {
        public int DroidColorID { get; set; }
        public int ColorID { get; set; }
        public int DroidID { get; set; }

    }

И я заполняю базу данных в самом начале. Заполнение таблицы droid и таблицы цветов работает нормально, но таблица droidcolor просто остается пустой.

 using (var context = new DBContext(serviceProvider.GetRequiredService<DbContextOptions<DBContext>>()))
            {
                if (context.Colors.Any())
                {
                    return;
                }


                var colors = new Color[]
                {

                    new Color{Color = "White"},
                    new Parameter{Color = "Black" },
                    new Parameter{Color = "Orange"},
                };

                foreach (Color c in colors)
                {
                    context.Colors.Add(c);
                }
                context.SaveChanges();

                

                if (context.Droids.Any())
                {
                    return;
                }

                var droids = new Droid[]
                {

                new Droid{DroidName = "R2-D2"},
                new Droid{DroidName = "C-3PO"},
                new Droid{DroidName = "BB-8"},
                };

                foreach (Droid d in droids)
                {
                    context.Droids.Add(d);
                }
                context.SaveChanges();


                

                if (context.DroidColors.Any())
                {
                    return;
                }

                var droidcolors = new DroidColor[]
               {
                 new DroidColor{DroidID = 1, ColorID = 1},
                 new DroidColor{DroidID = 1, ColorID = 2},
                 new DroidColor{DroidID = 2, ColorID = 1},
                 new DroidColor{DroidID = 2, ColorID = 2},
                 new DroidColor{DroidID = 2, ColorID = 3},
                 new DroidColor{DroidID = 3, ColorID = 1},
                 new DroidColor{DroidID = 3, ColorID = 3}
                
               };

 foreach (DroidColor DC in droidcolors)
                {
                    context.Droids.Add(DC);
                }
                context.SaveChanges();

Что мне не хватает? EF Core, похоже, игнорирует мой третий массив данных после работы с первым и вторым, как и ожидалось.

...