编辑2020年5月18日:此问题尚未解决,但我已设法解决。
我使用Entity Framework Fluent Api创建域类。属性之一具有映射HasDefaultValue(true)
。
[当我尝试将数据插入数据库并将此属性设置为false
时,某些内容将覆盖它,并且仍将true
插入数据库中。
实体生成器
public void Configure(EntityTypeBuilder<Shifts> builder)
{
builder.ToTable("Shifts");
builder.HasKey(s => s.ID);
builder.Property(s => s.Available)
.HasDefaultValue(true);
}
控制器
Shifts newShift = new Shifts()
{
Name = shiftOne,
Available = false,
// other fields
};
现在,当我这样保存它时:
_unitOfWork.Shifts.Add(newShift);
await _unitOfWork.Commit();
调试器显示,当我按下Available
行时,我的newShift对象的字段false
设置为unitOfWork.Shifts.Add(newShift);
。
提交后,突然变成true
,当我查看数据库时,我看到该字段设置为true
。代码运行没有错误。
如何防止这种情况并输入正确的值?
编辑解决方案:我已删除.HasDefaultValue
。显然,现在可以了,但是我仍然不知道是什么导致了此行为。
我可以看到两种解决您的问题的方法:
删除那个
。HasDefaultValue(true)
并将一个构造函数添加到您的班次中
public Shifts(){
Available=true;
}