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

How to force default values in an insert with EntityFramework core?

当使用 EntityFramework 核心添加记录时,如果我想强制具有默认值的列为另一个值,则采用默认值。

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);

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

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

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