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

.net-core c# entity-framework-core sql sql-server

使用EntityFramework Core添加記錄時,如果我想強制使用默認值為其他值的列,則會採用默認值。

SQL

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

。淨

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


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow