Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架实体生成器不覆盖默认值_C#_Entity Framework_Ef Fluent Api - Fatal编程技术网

C# 实体框架实体生成器不覆盖默认值

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

编辑2020年5月18日:这个问题还没有解决,但我已经解决了

我使用实体框架fluentapi创建域类。其中一个属性具有映射
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;
    }