Enity Framework - 更改默认值

时间:2018-06-12 12:24:28

标签: c# sql-server entity-framework entity-framework-6

我有一个SQL Server表,其中包含许多列的默认值。一个示例是ModifiedDtm(上次修改行的时间),它将GETDATE()作为默认值。为了避免与此冲突,我使用代码优先方法在Entity Framework 6.2中以下面的方式实现它:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime ModifiedDtm { get; set; }

这使得默认值在创建行时按预期工作。但是,它阻止我再次更新列。

如何使用它以便可以使用SQL默认值,但仍允许稍后使用EF更改值?

1 个答案:

答案 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()");
    }
}