Entity Framework - 更改默认值

3

我有一个SQL Server表,其中许多列都有默认值。例如ModifiedDtm(行最后修改的时间),其默认值为GETDATE()。为了避免冲突,我使用了Entity Framework 6.2的代码优先方法来实现它:

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

这使得在创建行时默认值起作用。但是,这将防止我再次更新该列。
如何才能使用SQL默认值,同时仍然允许稍后使用EF更改该值?

1
可能是Entity Framework 6 Code First默认值的重复问题。 - CodeNotFound
1个回答

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

注意:此解决方案需要使用 EF Core


2
我在.Property()方法中没有看到任何名为.HasDefaultValueSql()的选项。我需要在哪里包含一些东西吗? - Jakob Busk Sørensen
5
这并不能回答问题,因为HasDefaultValueSql只适用于EF Core,而不是EF 6。 - CodeNotFound
1
@Noceo,您可以检查重复的链接并了解如何使用EF 6进行配置。 - CodeNotFound
2
@CodeNotFound 谢谢,我正在尝试弄清楚如何使用那个答案 :-) - Jakob Busk Sørensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接