EntityFramework多对多初始化
public class Order
{
public virtual Guid OrderID {get;set;}
public virtual ICollection<Menu> Menus {get;set;}
}
public class Menu
{
public virtual Guid MenuID {get;set;}
public virtual ICollection<Order> Orders {get;set;}
public virtual int Price {get;set;}
}
比如是这样的两个实体
Order order = new Order();
order.OrderID = Guid.NewGuid();
//How to create?
//order.Menus = new List<Menu>();
order.Menus.Add(menu1);
order.Menus.Add(menu2);
order.Menus.Add(menu3);
order.Menus.Add(menu4);
dataContext.Orders.Add(order);
dataContext.SaveChanges();
创建一个订单,放入N个菜单,再保存进数据库
但是这样那些menu1~4存不进数据库
要new一个dataContext重新从数据库里读这个Order才能添加Menu,何解?
[解决办法]
当然不会更新了,没有源,如何执行更新
[解决办法]
有生成中间表没有。menu1-4有实例化吧。
[解决办法]
两个表的多对多是要通过一个中间表来存储的,你看看数据库里的,会多一张类似OrderMenu的表吧。
既然menu1~4已经在数据库里了,怎么可能再存一遍呢?EF会在中间表中将menu1~4的ID与其关联的OrderID存入。