Sql server 有没有办法在EF CodeFirst中指定数据库级别的默认值?

Sql server 有没有办法在EF CodeFirst中指定数据库级别的默认值?,sql-server,ef-code-first,Sql Server,Ef Code First,我需要EF CodeFirst创建的数据库支持默认值,以便在未提供值时可以将不可为null的值插入数据库 例如,我希望使用将默认日期添加到日期列,以便在模型外部插入某个内容时,日期列不需要值 我知道在使用模型进行更新时,我可以通过代码中的默认值来控制这一点,但这主要是因为模型更新。我经常使用RedGate的SqlCompare来更新结构,但是结构更新在不可为null的非默认字段上经常失败,因为新列需要一些值来验证模式,因此列添加失败。默认值和空值将允许这样做。Nullables可以工作,但在处理

我需要EF CodeFirst创建的数据库支持默认值,以便在未提供值时可以将不可为null的值插入数据库

例如,我希望使用将默认日期添加到日期列,以便在模型外部插入某个内容时,日期列不需要值

我知道在使用模型进行更新时,我可以通过代码中的默认值来控制这一点,但这主要是因为模型更新。我经常使用RedGate的SqlCompare来更新结构,但是结构更新在不可为null的非默认字段上经常失败,因为新列需要一些值来验证模式,因此列添加失败。默认值和空值将允许这样做。Nullables可以工作,但在处理代码中的null值时会引入其他问题,除非模型需要,否则我希望避免这些问题

是否有任何方法可以使用Fluent API或Attributes实现使用EF CodeFirst将默认值获取到列中?

是的,您需要使用DatabaseGeneratedOption的方法


您是否考虑过使用EF迁移而不是SqlCompare?
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)