sql - 如何使用实体框架更新多对多表
问题描述
我是 ASP.NET MVC 和实体框架的新手。
我有 3 个表:Employees
, Activity
, EmployeeActivity
{ EmployeeId, ActivityId }。
当用户想要更新数据时,他会EmployeeId
从下拉列表和ActivityId
下拉列表中更改...
EmployeeActivity
在我的模型中不存在导航属性。
现在我想知道如何找到相关行并更新它?
假设存在价值(1, 2)
,EmployeeActivity
我想将其编辑为(3, 4)
.
我怎样才能找到(1, 2)
要更改的?表中没有其他行?
解决方案
我希望您提出一个建议,即在您的 ViewModel 中使用一个额外的字段,具有如下字段
OldEmployeeId
EmployeeId
OldActivityId
ActivityId
**Note:** set the same value in identical fields like EmployeeId & OldEmployeeId same to ActivityId and OldActivityId. so when you saving/updating records you have a reference of previously selected value in OldEmployeeId & OldActivityId so it will help you to identify the record and update the value.
另一种选择是,如果您不想采用上述解决方案,则将数据库表 ID 中的一个额外字段作为主键,以便它将参考存储在您需要更新的位置。
推荐阅读
- python - 让子类自动调用超类方法
- postgresql - PostgreSql:如何使用加密列进行查询
- java - Android Recyclerview 的内容 ClickListener 无法正常工作
- java - 使用我自己的 Date 类作为用户输入的日期
- c# - 使用表适配器时未关闭数据库连接
- python - 如果它们在python中列表的固定索引中具有匹配值,则从列表列表中删除列表
- javascript - 如何在 commonJS 默认导出上开玩笑
- c# - 知道 CreateLinkedTokenSource 中哪个 CancellationToken 失败以评估奇怪的 cancelRequested 行为
- java - 我收到一个空指针异常错误,我找不到源
- flutter - 为什么我不能在 Flutter ModalBottomSheet 中滚动自定义 WebView