我想CreatedDate
在我的表中有一个列Accounts
,定义如下:
CreatedDate DATETIME NOT NULL DEFAULT GETUTCDATE()
这将映射到类中的 CreatedDate 属性:
public class Account
{
public DateTime? CreatedDate { get; private set; }
// ... other properties ...
}
创建新帐户时,我希望将 CreatedDate 设置为 NULL,并让数据库填充它。从数据库加载现有帐户时,我希望 EF 检索数据库生成的 CreatedDate。
我正在使用 EF 4.3 代码优先和显式迁移。当 EF 为 Accounts 表生成迁移时,我对其进行了如下修改:
CreatedDate = c.DateTime(nullable: false, defaultValueSql: "GETUTCDATE()"),
不幸的是,当我尝试使用 EF 4.3 映射表时,EF 尝试在 CreatedDate 列中插入值 NULL。
我尝试按照 Ladislav Mrnka 的建议为该属性设置 DatabaseGeneratedOption.Identity 。但是,这会从主键属性中删除标识选项。我尝试改用 DatabaseGeneratedOption.Computed,但它继续尝试插入 NULL。我恢复了所有迁移并重新运行它们 - 问题仍然存在。
这是我正在做的事情OnModelCreating
:
modelBuilder.Entity<Account>().Property(a => a.CreatedDate)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
有没有人有什么建议?
谢谢你的帮助,
理查德