我有一个SQL Server表,其中包含许多列的默认值。一个示例是ModifiedDtm
(上次修改行的时间),它将GETDATE()
作为默认值。为了避免与此冲突,我使用代码优先方法在Entity Framework 6.2中以下面的方式实现它:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime ModifiedDtm { get; set; }
这使得默认值在创建行时按预期工作。但是,它阻止我再次更新列。
如何使用它以便可以使用SQL默认值,但仍允许稍后使用EF更改值?
答案 0 :(得分:1)
您应该考虑使用流畅的API。在您的上下文类中使用HasDefaultValueSQL
添加一些小位以设置默认值,如下所示class MyContext : DbContext
{
public DbSet<YourEntity> YourEntities{ get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<YourEntity>()
.Property(b => b.Created)
.HasDefaultValueSql("getdate()");
}
}