C# 实体框架核心3.1.8未将0保存到默认值为-1的列中

C# 实体框架核心3.1.8未将0保存到默认值为-1的列中,c#,entity-framework-core,entity-framework-core-3.1,C#,Entity Framework Core,Entity Framework Core 3.1,我有一个表,其中有一个整数列不是主键或外键。它的默认值为-1 EF自动生成代码具有此表设置 entity.Property(e => e.ControlFlag) .HasColumnName("ControlFlag") .HasDefaultValueSql("((-1))"); 当我设置ControlFlag=0并通过调用EF CoreSaveChanges()方法将行添加到表中时,该列将以-1保存 如果我将ControlFl

我有一个表,其中有一个整数列不是主键或外键。它的默认值为-1

EF自动生成代码具有此表设置

entity.Property(e => e.ControlFlag)
    .HasColumnName("ControlFlag")
    .HasDefaultValueSql("((-1))");
当我设置
ControlFlag=0
并通过调用EF Core
SaveChanges()
方法将行添加到表中时,该列将以-1保存

如果我将
ControlFlag=1
,则保存在列中的值为1


为什么它不喜欢保存0?

看看有类似问题的。解决方案本质上是通过添加ValueGeneratedNever()来阻止EF为您设置默认值不确定它为什么会显示您描述的行为,还没有机会对此进行测试,但似乎它可能会起作用。这意味着每次重新生成上下文文件时,我们都必须对其进行编辑。您可以为上下文创建一个分部类,设置
ValueGeneratedNever
,这样您就可以随时重新生成上下文。编辑上下文是人们在dotnet core中进行db first工作时经常需要做的事情。