entity framework配置addorupdate多对多种子记录

entity framework configuration addorupdate many-to-many seed records

定义多对多关系不是问题。 我有一个房间 table(就像房子里的房间),每个房间都可以有颜色 table.
中的一种或多种颜色 每个都有一个指向相反 table 的列表引用 - 请参阅下面的 classes。

在配置 class 的种子方法中,我正在使用 AddOrUpdate 创建各种 tables。

            ctx.Rooms.AddOrUpdate(r => new { r.Name, r.HouseId },
            new Room
            {
                Name = "Kitchen",
                House = (from h in ctx.Houses where h.Address == "Littleton, MA" select h).First(),
                HouseId = (from h in ctx.Houses where h.Address == "Littleton, MA" select h.HouseId).First()
            });

(后面当然是ctx.SaveChanges)

我可以用同样的方法创造出很多颜色:

            ctx.Colors.AddOrUpdate(c => new { c.ColorName },
            new Color
            {
                ColorName = "Green"
            });

我想为每个房间关联一种或多种颜色。

(在 SQL:) 颜色:

EF 创建 table 在多对多关系中关联两者。

这看起来应该很容易,但是我找不到方法,我也在网上搜索了。 谢谢你的帮助。 :-)

确保您在 Room 构造函数中初始化您的列表

public class Room
{
   public Room()
   {
      Colors = new List<Color>();
   }
   // properties omitted
   public virtual IList<Color> Colors {get;set;}
}

然后打电话

room.Colors.Add(Color color);

这将为您的列表添加一种颜色。

这不是最佳解决方案,因为您应该封装您的集合,这样您就不会绕过任何业务规则,但 EF 6 做到了 difficult

EF 内核使它大有作为easier