Entity Framework Core数据库优先生成可空属性问题咨询
EF Core脚手架生成可空属性的原因分析
你遇到的这个情况,主要有以下几种可能:
工具版本问题:早期EF Core版本(比如3.x及更早)的Scaffold工具,在处理带默认值的非空
bit字段时,会生成bool?可空属性,但上下文里会保留.IsRequired()配置来保证数据库约束。升级到EF Core 5.0及以上版本,这个逻辑会修正,直接生成非空的bool属性。数据库元数据错误:检查数据库字段的实际元数据是否和配置一致,执行以下SQL查询:
SELECT is_nullable FROM sys.columns WHERE name = 'active' AND object_id = OBJECT_ID('你的表名')如果返回
1,说明数据库里该字段实际被标记为允许为空,和你认为的非空设置不符,需要重新添加非空约束。默认值表达式的影响:因为你的
active字段默认值是((1))这种表达式,而非直接常量,脚手架的识别逻辑可能出现偏差,误生成可空属性。这种情况可以手动把模型里的bool?改成bool,上下文的.IsRequired()已经保证了非空约束,不会影响功能。
内容的提问来源于stack exchange,提问作者HermanTheGerman
相关产品推荐
相关产品推荐

