You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

N.EntityFramework.Extensions的UpdateFromQuery是否正确处理数据库可空列?

关于N.EntityFramework.Extensions处理数据库可空列的疑问

存在表MyTable,包含两个可空nvarchar列col1、col2,数据库中数据如下:

id  col1 col2
-------------
1    A    B
2    C    D

执行以下代码:

DbContext.MyTable
         .Where(x => x.Id == 1)
         .UpdateFromQuery(x => new MyTable { col1 = null });

核心疑问:UpdateFromQuery如何区分需设为NULL的列和无需更新的列?上述代码是否会将col1设为NULL,同时保留col2的值为"B"?因为C#对象中两个字段默认值均为NULL。


回答

N.EntityFramework.Extensions的UpdateFromQuery方法是基于你显式赋值的属性生成SQL更新语句的,不会因为C#对象的默认null值修改未显式指定的列。

针对你的示例:

  • 代码里只显式设置了col1 = null,所以生成的SQL只会更新col1列,将其设为NULL。
  • col2没有被显式赋值,无论它在C#对象中的默认值是什么,都不会被包含在UPDATE语句中,数据库里该行的col2值"B"会被完整保留。

简言之,UpdateFromQuery仅处理你主动指定的属性:显式赋值null的列会被更新为NULL,未提及的列保持数据库原有值不变,天然就能区分要修改的列和无需更新的列。

内容的提问来源于stack exchange,提问作者Ilya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:20:55