更新内部联接数据

问题描述 投票:0回答:1

从上一个问题here转发来。

我正在使用DTO方法来内部联接数据。现在可以根据合并结果更新数据了吗?数据将如何更新回到应有的原始表中?

要求:

  • 我正在使用Entity Framework,C#,ASP.NET Web API
  • 我正在使用SQL Server

例如,我在ID上加入了[[employee和department表。

内部联接查询在这里:

from e in DSE.employees join d in DSE.departments on e.department_id equals d.department_id join ws in DSE.workingshifts on e.shift_id equals ws.shift_id

所以数据在这里:

[{“ FirstName”:“ Peter”,“ LastName”:“ Joe”,“ Gender”:“ Male”,“ Salary”:1234,“ Department_id”:1,“ Department_Name”:“ RND”, “ Shift_id”:“ A”,“ Duration”:“ morning”},{“ FirstName”:“ John”,“ LastName”:“ Doe”,“ Gender”:“ Male”,“ Salary”:1234,“ Department_id “:2,”部门名称“:”帐户“,” Shift_id“:” B“,”持续时间“:”下午“},{”名字“:”玛丽“,”姓氏“:”琼斯“,”性别“: “ Female”,“ Salary”:5566,“ Department_id”:3,“ Department_Name”:“ HR”,“ Shift_id”:“ A”,“ Duration”:“ morning”},{“ FirstName”:“ Elizabeth”, “ LastName”:“ Tan”,“ Gender”:“女性”,“薪水”:9999,“ Department_id”:1,“ Department_Name”:“ RND”,“ Shift_id”:“ C”,“ Duration”:“晚上“},{” FirstName“:” gg“,” LastName“:” wp“,” Gender“:” NoGender“,” Salary“:8,” Department_id“:1,” Department_Name“:” RND“,” Shift_id “:” B“,”持续时间“:”下午“}]

现在我想将

名字

gg更新为好游戏,并且将[[姓氏 wp更新为玩得好的。如何执行编码结果?并且我想知道我在实体框架或存储过程中需要做什么。(我在这里接受两种解决方案)
c# asp.net sql-server inner-join update-inner-join
1个回答
0
投票
UPDATE e SET e.FirstName = 'good game', e.LastName = 'well played' FROM employees e INNER JOIN departments d ON d.department_id = e.department_id INNER JOIN workingshifts ws ON e.shift_id equals ws.shift_id WHERE e.FirstName = 'gg' AND e.LastName = 'wp'

[不知道表的结构,我只使用了INNER JOIN

可以找到执行此操作的实体框架:

var result = (from e in DSE.employees join d in DSE.departments on e.department_id equals d.department_id join ws in DSE.workingshifts on e.shift_id equals ws.shift_id where e.FirstName == 'gg' && e.LastName == 'wp' select e).FirstOrDefault() // As it seems like we are just wanting employees however if you are expecting to return more than one employee back, you could use .ToList() instead of .FirstOrDefault() if(result != null) { result.FirstName = "Good Game"; result.LastName = "Well Played"; await context.SavechangesASync(); // If inside an async function, else just SaveChanges() }

这就是您要回派一名员工的情况。就像我说的,如果要返回列表,则需要将更改合并到上面的代码中。使用上面的方法,您还需要在要返回所需值的结果集上执行where

© www.soinside.com 2019 - 2024. All rights reserved.