我使用Entity Framework Fluent Api创建域类。属性之一具有映射HasDefaultValue(true)
。
[当我尝试将数据插入数据库并将此属性设置为false
时,某些内容将覆盖它,并且仍将true
插入数据库中。
EntityBuilder
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,
// other fields
};
if(isPartTime == true)
{
shifts.Available = false;
}
现在将其保存为:
unitOfWork.Shifts.Add(newShift);
await _unitOfWork.Commit();
调试器显示我的newShift对象的字段Available设置为false
,这是正确的。提交后,状态突然变为true
,当我查看数据库时,我看到该字段设置为true
。
如何防止这种情况并输入正确的值?
您正在设置完全不同的变量的属性。您正在创建newShift
:
Shifts newShift = new Shifts() { ... }
但是您正在设置shifts.Available
的值:
if(isPartTime == true)
{
shifts.Available = false;
}
那时也应该是newShift
,即:
if(isPartTime == true)
{
newShift.Available = false;
}
另外可以进一步简化为:
newShift.Available = !isPartTime;