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

问题描述 投票:0回答:1

使用 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 生成每个类后重做所有实体中的所有数据注释。

c# sql sql-server entity-framework-core .net-core
1个回答
2
投票

我使用 configBuilder 对象在属性上添加数据注释

[DataGenerated(DataGeneratedOption.None)]
:

modelBuilder.Entity<MyEntity>().Property(a => a.MyBool).ValueGeneratedNever();
© www.soinside.com 2019 - 2024. All rights reserved.