使用 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 生成每个类后重做所有实体中的所有数据注释。
我使用 configBuilder 对象在属性上添加数据注释
[DataGenerated(DataGeneratedOption.None)]
:
modelBuilder.Entity<MyEntity>().Property(a => a.MyBool).ValueGeneratedNever();