gpt4 book ai didi

entity-framework - 如何让 Entity Framework 仅更新在生成的 SQL 中修改的属性?

转载 作者:行者123 更新时间:2023-12-04 12:56:23 25 4
gpt4 key购买 nike

我将 Entity Framework 与自跟踪实体 T4 模板一起使用,默认情况下,它将生成一个 SQL 查询,在 UPDATE 语句中设置实体上的所有属性。我只想要一个包含修改过的属性的 UPDATE 语句。

我修改了书中指定的T4模板:Entity Framework Recipes: A Problem-Solution Approach第 503 页。

我在 T4 模板中更改为这一行:

OriginalValueMembers originalValueMembers = new OriginalValueMembers(false, metadataWorkspace, ef);

让实体跟踪每个属性的变化,而不是仅仅跟踪实体的变化。

并且
context.ObjectStateManager.ChangeObjectState(entity, EntityState.Unchanged);

进行这些更改后,我得到了所需的 SQL 语句结果,仅在 UPDATE 语句中修改了值/属性。然而,有一个奇怪的副作用。将可为 null 的 INT 属性从 null 更新为 null 以外的内容时, Entity Framework 会忽略该更改。自跟踪模型使用准确的 OriginalValue null 显示 ChangeTracker 中的更改,但是当 Entity Framework 尝试生成 UPDATE SQL 时,如果原始值为 null 且新值不为 null,则它不会看到该属性更改。如果原始值不为空并且值被更改,我就会工作。

对于从 null 到非 null 值的字符串属性,它似乎可以正常工作,但是 int?不管用。

有没有人有任何想法?

最佳答案

如果有帮助,请找到解决此问题的帖子:fix update of nullable column .

关于entity-framework - 如何让 Entity Framework 仅更新在生成的 SQL 中修改的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com