更新内连接数据
Update inner join data
从上一个问题 .
我正在使用 DTO 方法来内部联接数据。现在是否可以在我的合并结果中更新数据?数据将如何更新回原点 table 应该在哪里?
要求:
- 我正在使用 Entity Framework、C#、ASP.NET 网络 API
- 我正在使用SQL服务器
目前我根据ID成功加入了员工和部门table ].
我根据 shift_id.
加入了 employee 和 workingshifts
内连接查询在这里:
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":"gg","LastName":"wp","Gender":"NoGender","Salary":8,"Department_id":1,
"Department_Name":"RND","Shift_id":"B","Duration":"afternoon"}]
现更新信息如下:
FirstName: good game
LastName: well played
Gender: IGender
Salary: 8888
Shift_id: A
Duration: Morning
我可以知道在我的 C# 和 Linq 中应该完成什么代码吗?它会更新回我的数据库 tables 吗?
此外,我听说过使用 SQL 存储过程的解决方案,您也可以向我展示这种方法
好吧,根据您的评论。 SQL 基于连接更新值的服务器是
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
。
可以找到 Entity Framework 执行此操作:
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()
}
这只是在您 return 聘请一名员工的情况下。正如我所说,如果您要 return 创建一个列表,则需要将更改合并到上面的代码中。通过以上内容,您还需要对结果集执行 where
操作 return 您想要的值
编辑:在 Entity Framework 方法
中将 '
更改为 "
从上一个问题
我正在使用 DTO 方法来内部联接数据。现在是否可以在我的合并结果中更新数据?数据将如何更新回原点 table 应该在哪里?
要求:
- 我正在使用 Entity Framework、C#、ASP.NET 网络 API
- 我正在使用SQL服务器
目前我根据ID成功加入了员工和部门table ]. 我根据 shift_id.
加入了 employee 和 workingshifts内连接查询在这里:
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":"gg","LastName":"wp","Gender":"NoGender","Salary":8,"Department_id":1,
"Department_Name":"RND","Shift_id":"B","Duration":"afternoon"}]
现更新信息如下:
FirstName: good game
LastName: well played
Gender: IGender
Salary: 8888
Shift_id: A
Duration: Morning
我可以知道在我的 C# 和 Linq 中应该完成什么代码吗?它会更新回我的数据库 tables 吗? 此外,我听说过使用 SQL 存储过程的解决方案,您也可以向我展示这种方法
好吧,根据您的评论。 SQL 基于连接更新值的服务器是
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
。
可以找到 Entity Framework 执行此操作:
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()
}
这只是在您 return 聘请一名员工的情况下。正如我所说,如果您要 return 创建一个列表,则需要将更改合并到上面的代码中。通过以上内容,您还需要对结果集执行 where
操作 return 您想要的值
编辑:在 Entity Framework 方法
中将'
更改为 "