如何根据实体框架mirations中的另一个字段值更改字段的值?
我有一个名为Tbl_Accounts的表,其中包含以下列:
在我的程序的旧版本中,“代码”列有一个3长度数字值,
例如,我列出了以下文件中存储在Tbl_Account中的一些数据:
现在:我想根据它的父级迁移来改变像bellow这样的代码的值:
注意:ID = 7的记录的代码值:
ID = 5的记录的代码值:
答案 0 :(得分:1)
如果您想在迁移中执行此操作,可以使用原始SQL。
Sql(假设你正在使用Sql Server)看起来像这样(你需要一个递归的CTE,因为更新的值可以取决于"之前的"更新的值)
WITH cte
AS
(
SELECT id, code
FROM Tbl_Accounts
WHERE parent_id IS NULL
UNION ALL
SELECT u.id, d.code + u.code
FROM Tbl_Accounts AS u
INNER JOIN cte AS d
ON d.id = u.parent_id
)
update t
set t.code = c.code
from cte c
join Tbl_Accounts t on t.id = c.id
如果您使用代码优先迁移,您可以将其作为字符串变量,并且只是(以该方法)
Sql(<yourStringVariableContainingTheSql);
顺便说一下,您也可以直接在您的基地执行此查询。
请参阅sqlFiddle以确保结果