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