Entity Framework 实体生成器不覆盖默认值
Entity Framework Entity Builder not overwriting default value
编辑 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();
当点击 unitOfWork.Shifts.Add(newShift);
行时,调试器显示我的 newShift 对象有一个字段 Available
设置为 false
。
提交后,突然变为 true
,当我查看数据库时,我看到该字段设置为 true
。代码运行无误。
如何防止这种情况发生并输入正确的值?
编辑解决方案:我已删除 .HasDefaultValue
。显然,现在它可以工作了,但我仍然不知道是什么导致了这种行为。
我可以看到两种解决问题的方法:
- 让你的 "Available" 属性 做 nullable bool - 它应该做
或
删除那个
.HasDefaultValue(真)
并向您的班次添加构造函数
public Shifts(){
Available=true;
}
编辑 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();
当点击 unitOfWork.Shifts.Add(newShift);
行时,调试器显示我的 newShift 对象有一个字段 Available
设置为 false
。
提交后,突然变为 true
,当我查看数据库时,我看到该字段设置为 true
。代码运行无误。
如何防止这种情况发生并输入正确的值?
编辑解决方案:我已删除 .HasDefaultValue
。显然,现在它可以工作了,但我仍然不知道是什么导致了这种行为。
我可以看到两种解决问题的方法:
- 让你的 "Available" 属性 做 nullable bool - 它应该做 或
删除那个
.HasDefaultValue(真)
并向您的班次添加构造函数
public Shifts(){
Available=true;
}