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

Entity Framework Core:如何用数据注解为可为空列设置默认值

解决EF Core Code First数据注解给可空bool设默认值的问题

你用的[DefaultValue(true)]是System.ComponentModel类库的注解,EF Core不会把它识别为数据库列的默认值配置,所以迁移工具生成的代码里没添加对应的默认值设置。

以下是可行的解决方案:

  • 针对SQL Server(你的迁移中列类型为bit),用[Column]注解直接指定带默认值的列类型:

    [Column(TypeName = "bit DEFAULT 1")]
    public bool? ColumnName { get; set; }
    

    重新生成迁移后,Up方法的AlterColumn会包含默认值配置,数据库列会被添加DEFAULT 1的约束。

  • 如果需要新创建的实体对象在内存中也有默认值,可以同时给属性初始化:

    [Column(TypeName = "bit DEFAULT 1")]
    public bool? ColumnName { get; set; } = true;
    

注:EF Core本身没有原生的数据注解专门用于设置数据库默认值,上述方式是通过在列类型定义中嵌入数据库原生语法实现的,适用于无法使用Fluent API的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:25:15