【问题标题】:NHibernate Component not-null property when being inserted插入时 NHibernate 组件非空属性
【发布时间】:2010-11-13 04:18:16
【问题描述】:

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

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

“not-null 属性引用了 null 或瞬态 [完整属性名称]”,这似乎很荒谬,NHibernate 怎么会传递给我一个 NULL 但它本身却不接受它。

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

谢谢

【问题讨论】:

    标签: .net nhibernate components


    【解决方案1】:

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

    当您从数据库中获取时,如果您使用带有公共设置器的自动属性,您可能会遇到这种问题。

    如果你有这个:

    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;
            }
        }
    

    HTH,

    克里斯-I,

    【讨论】:

    • 是的,我想是的。如果这甚至没有进入我的脑海,自动属性真的让我很懒惰!谢谢
    • 实际上它是组件上设置为 null 的属性,但是 NHibernate 每当它返回错误时都是在抱怨组件而不是它的属性之一。刚刚为遇到此问题的任何其他人提到了这一点。
    猜你喜欢
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多