Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Enity框架-更改默认值_C#_Sql Server_Entity Framework_Entity Framework 6 - Fatal编程技术网

C# Enity框架-更改默认值

C# Enity框架-更改默认值,c#,sql-server,entity-framework,entity-framework-6,C#,Sql Server,Entity Framework,Entity Framework 6,我有一个SQL Server表,在很多列上都有默认值。例如,ModifiedDtm(行上次修改的时间),其默认值为GETDATE()。为了避免与此冲突,我在Entity Framework 6.2中使用代码优先的方法以以下方式实现了它: [DatabaseGenerated(DatabaseGeneratedOption.Computed)] public DateTime ModifiedDtm { get; set; } 这使默认值在创建行时按预期工作。但是,它阻止我再次更新该列 如何使S

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

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime ModifiedDtm { get; set; }
这使默认值在创建行时按预期工作。但是,它阻止我再次更新该列


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

您应该考虑使用FLUENT API来实现这一点。在您的上下文类中,添加一点点用于设置默认值,如下所示,使用

class MyContext:DbContext
{
公共数据库集实体{get;set;}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.Property(b=>b.Created)
.HasDefaultValueSql(“getdate()”);
}
}

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

对于
.Property()
方法,我看不到任何名为
.HasDefaultValueSql()
的选项。我必须在某个地方包含一些东西吗?这并不能回答问题,因为
HasDefaultValueSql
在EF Core中可用,而不是在EF 6中。@Noceo您可以检查复制的链接,并知道如何使用EF 6配置该链接。@CodeNotFound谢谢,我正在尝试找出如何使用该答案:-)可能的重复链接
class MyContext : DbContext
{
    public DbSet<YourEntity> YourEntities{ get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<YourEntity>()
            .Property(b => b.Created)
            .HasDefaultValueSql("getdate()");
    }
}