C# select上null属性的实体框架默认值

C# select上null属性的实体框架默认值,c#,entity-framework,entity-framework-6,asp.net-web-api2,C#,Entity Framework,Entity Framework 6,Asp.net Web Api2,我可能正在考虑从我的ORM的nHibernate转移到实体框架,如果数据库是空的,但实体属性不是空的,我会遇到一个小问题。nHibernate将只设置默认值并继续,不会导致任何异常。这意味着,如果我有一个布尔属性,那么如果数据库为null,它将为false 在实体框架(6)中,它抛出一个异常。如果属性不可为null且数据库值为null,是否缺少一些配置设置来告诉EF设置默认值 您的实体属性不必是自动属性,因此您可以,例如: public class SomeEntity { private

我可能正在考虑从我的ORM的nHibernate转移到实体框架,如果数据库是空的,但实体属性不是空的,我会遇到一个小问题。nHibernate将只设置默认值并继续,不会导致任何异常。这意味着,如果我有一个布尔属性,那么如果数据库为null,它将为false


在实体框架(6)中,它抛出一个异常。如果属性不可为null且数据库值为null,是否缺少一些配置设置来告诉EF设置默认值

您的实体属性不必是自动属性,因此您可以,例如:

public class SomeEntity
{
  private bool _field
  public bool? Field
  {
    get { return _field; }
    set { _field = value.HasValue ? false : value.Value; }
  }
}

您的实体属性不必是自动属性,因此您可以,例如:

public class SomeEntity
{
  private bool _field
  public bool? Field
  {
    get { return _field; }
    set { _field = value.HasValue ? false : value.Value; }
  }
}

当数据库列为空时,为什么属性不可为空?他们应该准确地映射,EF不容忍这样的事情。不,EF不支持(与NHibernate相比,不支持的功能列表相当长。它的LINQ支持是USP)。@IvanStoev,我们遇到的问题是,数据库开发人员会将列更改为可空,并在不通知开发人员的情况下向其添加空值。如果开发人员管理了过程中的所有内容,我同意您的看法。为什么数据库列为空时属性不可为空?他们应该准确地映射,EF不容忍这样的事情。不,EF不支持(与NHibernate相比,不支持的功能列表相当长。它的LINQ支持是USP)。@IvanStoev,我们遇到的问题是,数据库开发人员会将列更改为可空,并在不通知开发人员的情况下向其添加空值。我同意你的观点,如果开发人员管理了整个过程中的一切。