Sql 在C#和EF Core中播种多对多数据库
我想用EF Core为我的数据库设定种子,并为多对多关系设定连接表种子,但这不起作用 我有三种型号:Sql 在C#和EF Core中播种多对多数据库,sql,database,ef-core-2.0,seeding,Sql,Database,Ef Core 2.0,Seeding,我想用EF Core为我的数据库设定种子,并为多对多关系设定连接表种子,但这不起作用 我有三种型号: public class Droid { public int DroidId { get; set; } public string DroidName { get; set; } } public class Colors { public int ColorID { get; set; } p
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();
使用(var context=new DBContext(serviceProvider.GetRequiredService())
{
if(context.Colors.Any())
{
返回;
}
var colors=新颜色[]
{
新颜色{Color=“White”},
新参数{Color=“Black”},
新参数{Color=“Orange”},
};
foreach(颜色中的c色)
{
上下文。颜色。添加(c);
}
SaveChanges();
if(context.Droids.Any())
{
返回;
}
var机器人=新机器人[]
{
新机器人{DroidName=“R2-D2”},
新机器人{DroidName=“C-3PO”},
新机器人{DroidName=“BB-8”},
};
foreach(机器人中的机器人d)
{
上下文.Droids.Add(d);
}
SaveChanges();
if(context.DroidColors.Any())
{
返回;
}
var droidcolors=新DroidColor[]
{
新DroidColor{DroidID=1,ColorID=1},
新的DroidColor{DroidID=1,ColorID=2},
新DroidColor{DroidID=2,ColorID=1},
新DroidColor{DroidID=2,ColorID=2},
新DroidColor{DroidID=2,ColorID=3},
新DroidColor{DroidID=3,ColorID=1},
新DroidColor{DroidID=3,ColorID=3}
};
foreach(DroidColor中的DroidColor DC)
{
context.Droids.Add(DC);
}
SaveChanges();
我遗漏了什么?EF Core似乎忽略了我的第三个数据数组,在按照预期处理了第一个和第二个数据数组之后