在c#和ef core中为多对多数据库种子

d4so4syb  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(212)

我想种子我的数据库与ef核心和种子连接表的多对多关系不起作用。
我有三个模型:

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表和color表进行种子设定可以很好地工作,但是droidcolor表只是保持emtpy。

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();

我错过了什么?efcore似乎忽略了我的第三个数据数组,正如预期的那样处理了第一个和第二个数据数组。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题