为了账号安全,请及时绑定邮箱和手机立即绑定

在实体框架中插入多对多的链接表

在实体框架中插入多对多的链接表

C#
大话西游666 2022-10-23 16:44:43
我有 3 张桌子Operator OperatorWarehouse 仓库|   Operators   |     |   OperatorsWarehouses  |     |   Warehouses  ||   OperatorID  |  -  |        OperatorID      |  -  |   WarehouseID ||   EmployeeID  |     |        WarehouseID     |     |   Warehouse   |所以基本上在我的实体框架中,“OperatorsWarehouses”表没有出现......Warehouses 表中已经有数据了,我只需要插入 Operators 和 OperatorsWarehouses 来建立关系。这是我的代码using (InventoryContext db = new InventoryContext ()){   Employee employee = new Employee();   employee.EmployeeID = Convert.ToInt32(ddlOperators.SelectedValue);   var operator = new Operator();   operator.EmployeeID = employee.EmployeeID ;   db.Operator.Add(operator);   db.SaveChanges();                          ddlOperators.DataBind();}                    我已经试过了operator.Warehouses.Add(new Warehouse());但这将插入到仓库表中,我不想这样做,我只想在该表上插入运算符
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

您应该为 Operator 的 Warehouse 提供 Id,如果您添加的 Warehouse 的 id 为 0,则它被认为是一个新的 Warehouse。您可以在 UI 中为用户在添加操作员后选择的仓库添加下拉列表。


using (InventoryContext db = new InventoryContext ())

 {

   Employee employee = new Employee();

   employee.EmployeeID = Convert.ToInt32(ddlOperators.SelectedValue);

   var wareHouseId = Convert.ToInt32(ddlWarehouses.SelectedValue);

   var operator = new Operator();

   operator.EmployeeID = employee.EmployeeID ;

   operator.Warehouses.add(new Warehouse(){Id=wareHouseId});

   db.Operator.Add(operator);


   db.SaveChanges();                       

   ddlOperators.DataBind();

}         


查看完整回答
反对 回复 2022-10-23
?
炎炎设计

TA贡献1808条经验 获得超4个赞

添加[NotMapped]您的定义表:

像这样的东西

[NotMapped]
public List<Warehouse> Warehouses;


查看完整回答
反对 回复 2022-10-23
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

当它是“纯”多对多关系时,实体框架将隐藏关系表。所以你不会看到OperatorsWarehouses表,它将由 EF 处理。


要添加关系,您只需将实体添加到实体,因此您可以将操作员添加到仓库,也可以将仓库添加到操作员。


在您的特定情况下,您需要将现有仓库添加到操作员,或将现有操作员添加到仓库。像这样的东西:


 int whId = 1; //warehouse with id 1

 db.Warehouses.FirstOrDefault(x => x.WarehouseID ==

 whId ).Operators.Add(operator);

注意:注意 FirstOrDefault 如果没有 id 为 1 的仓库,它将返回 null


查看完整回答
反对 回复 2022-10-23
  • 3 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号