C# 实体框架实体生成器不覆盖默认值
编辑2020年5月18日:这个问题还没有解决,但我已经解决了 我使用实体框架fluentapi创建域类。其中一个属性具有映射C# 实体框架实体生成器不覆盖默认值,c#,entity-framework,ef-fluent-api,C#,Entity Framework,Ef Fluent Api,编辑2020年5月18日:这个问题还没有解决,但我已经解决了 我使用实体框架fluentapi创建域类。其中一个属性具有映射hasdaultvalue(true) 当我尝试向数据库中插入数据,并将此属性设置为false,某些内容会覆盖此属性,并仍然在数据库中插入true 实体生成器 public void Configure(EntityTypeBuilder<Shifts> builder) { builder.ToTable("Shifts"); builder.H
hasdaultvalue(true)
当我尝试向数据库中插入数据,并将此属性设置为false
,某些内容会覆盖此属性,并仍然在数据库中插入true
实体生成器
public void Configure(EntityTypeBuilder<Shifts> builder)
{
builder.ToTable("Shifts");
builder.HasKey(s => s.ID);
builder.Property(s => s.Available)
.HasDefaultValue(true);
}
现在,当我这样保存它时:
_unitOfWork.Shifts.Add(newShift);
await _unitOfWork.Commit();
调试器显示,当点击unitOfWork.shift.Add(newShift)时,我的newShift对象有一个字段Available
设置为false
代码>行
提交之后,它会突然变为true
,当我查看数据库时,我看到字段被设置为true
。代码运行时没有错误
如何防止出现这种情况并输入正确的值
使用解决方案编辑:我已删除.hasdaultvalue
。很明显,现在它起作用了,但我仍然不知道是什么原因导致了这种行为。我可以找到两种解决问题的方法:
使您的“可用”属性执行可为null的bool-它应该可以
或
去掉那个
.HasDefaultValue(true)
并在班次中添加构造函数
public Shifts(){
Available=true;
}
哪个EF版本?是的,我决定去掉.HasDefaultValue
。
public Shifts(){
Available=true;
}