【发布时间】:2021-04-29 17:35:03
【问题描述】:
我有一个名为“LineItem”的表,其中包含“SortOrder 和 Bom_Fk”列,并且这些列上有唯一键约束。
假设,表格有 2 行如下
ID | SortOrder| Bom_Fk
1 | 1 | 122
2 | 2 | 122
现在,我将这些行更新如下
ID | SortORder| Bom_Fk
1 | 2 | 122
2 | 1 | 122
只是我正在反转 Line items 的 SortOrder。
注意,SortOrder 不为空,唯一约束
当尝试从 EF 核心更新时,这会引发唯一约束错误,同时将第一个行项更新为第二个行项在数据库中的排序顺序为 2。 所以我想使用 UpdateRange(..) 进行批量更新,但这会引发如下所述的错误。
无法保存更改,因为在 要保存的数据:'LineItem [Modified]
用于更新此表的代码...
lineItemsToUpdate.Add(lineItem);
context.LineItems.UpdateRange(lineItemsToUpdate);
我打算将 SortOrder 设为 null 并确保它在 Code 中不为 null... 这样我就可以用 null 更新所有 LineItems,然后用新值更新。(我还没有尝试过,为 Unique 约束设置 null 不是一个好主意,但这是我打算尝试的解决方法)
有什么方法可以让它保持“排序顺序为非空唯一列”吗?
【问题讨论】:
标签: c# asp.net-core .net-core concurrency entity-framework-core