如何在EntityFramework核心的插入中强制使用默认值?

时间:2016-11-17 13:17:27

标签: c# sql sql-server entity-framework-core .net-core

使用EntityFramework Core添加记录时,如果我想强制使用默认值为其他值的列,则会采用默认值。

SQL

CREATE TABLE MyEntity(
    Id INT IDENTITY(1,1) NOT NULL, 
    MyProperty1 VARCHAR(50),
    MyBool BIT NOT NULL DEFAULT 1
);

.NET

public void insertNewMyEntity()
{
    MyEntity me = New MyEntity();
    me.MyProperty1 = "Testing insert and default values with EF Core";
    me.MyBool = 0;
    dbContext.MyEntity.Add(me);
    dbContext.SaveChanges();
}

在数据库中,MyBool = 1,因为EntityFramework发送以下命令:

INSERT INTO MyEntity(MyProperty1) VALUES ("Testing insert and default values with EF Core");

而不是:

INSERT INTO MyEntity(MyProperty1, MyBool) VALUES ("Testing insert and default values with EF Core", 0);

我可以在[DataGenerated(DataGeneratedOption.None)]上添加数据注释MyBool,但我不希望在使用EF生成每个类之后重做所有实体中的所有数据注释。

1 个答案:

答案 0 :(得分:2)

我使用configBuilder对象在属性上添加数据注释[DataGenerated(DataGeneratedOption.None)]

modelBuilder.Entity<MyEntity>().Property(a => a.MyBool).ValueGeneratedNever();