代码之家  ›  专栏  ›  技术社区  ›  John_

插入时NHibernate组件不为null属性

  •  1
  • John_  · 技术社区  · 17 年前

    从数据库检索时,没有为任何子属性分配值的组件也将设置为null。

    我不介意,这只是一个额外的检查,看看组件是否为空。但是,当我尝试使用null组件更新或插入该对象到数据库中时,会出现以下错误:

    是否缺少一些映射选项来覆盖此选项,或者在更新或插入数据库之前,是否真的必须将组件设置为一个值?

    谢谢

    1 回复  |  直到 17 年前
        1
  •  3
  •   TheBoubou codingbadger    17 年前

    如果所有属性都为null,那么在编写时组件本身为null,这是一种正常行为。

    当您从数据库获取数据时,如果您将自动属性与公共setter一起使用,则可能会出现此类问题。

    如果您有:

    public virtual MyComponent MyComponentObject { get; set; }  
    

    您必须这样做:

        private MyComponent _myComponent;
        public virtual MyComponent MyComponentObject 
        {
            get
            {
                if (ReferenceEquals(null, _myComponent))
                {
                    _myComponent= new MyComponent();
                }
                return _myComponent;
            }
            set
            {
                _myComponent = value;
            }
        }
    

    嗯,,