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
相关产品推荐
相关产品推荐

