Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
.net 插入时NHibernate组件不为null属性_.net_Nhibernate_Components - Fatal编程技术网

.net 插入时NHibernate组件不为null属性

.net 插入时NHibernate组件不为null属性,.net,nhibernate,components,.net,Nhibernate,Components,从数据库检索时,没有为任何子属性分配值的组件也将设置为null 我不介意,这只是一个额外的检查,看看组件是否为空。但是,当我尝试使用null组件更新或插入该对象到数据库中时,会出现以下错误: “not null属性引用null或瞬态[完整属性名]”这似乎很不可思议,为什么NHibernate会向我传递null,但它本身不会接受它 是否缺少一些映射选项来覆盖此选项,或者在更新或插入数据库之前,是否真的必须将组件设置为一个值 谢谢如果所有属性都为空,那么在编写时组件本身为空,这是正常的行为 当您从数

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

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

“not null属性引用null或瞬态[完整属性名]”这似乎很不可思议,为什么NHibernate会向我传递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;
        }
    }
嗯,


克里斯-我,

是的,我想是的。自动属性真的让我很懒,如果这还没有进入我的头脑的话!ThanksIt实际上证明它是组件上的一个属性,该属性被设置为null,但是每当它返回错误时,NHibernate都会抱怨组件而不是它的一个属性。刚才提到这一点是为了其他任何遇到这个问题的人。