插入时 NHibernate 组件非空属性
Posted
技术标签:
【中文标题】插入时 NHibernate 组件非空属性【英文标题】:NHibernate Component not-null property when being inserted 【发布时间】:2010-11-13 04:18:16 【问题描述】:当从数据库中检索时,没有为任何子属性分配值的组件也将被设置为 null。
我不介意,这只是额外检查组件是否为空。但是,当我尝试使用 null 组件将该对象更新或插入到数据库中时,出现错误:
“not-null 属性引用了 null 或瞬态 [完整属性名称]”,这似乎很荒谬,NHibernate 怎么会传递给我一个 NULL 但它本身却不接受它。
我是否缺少一些映射选项来覆盖它,或者我真的必须在更新或插入数据库之前将组件设置为一个值?
谢谢
【问题讨论】:
【参考方案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 每当它返回错误时都是在抱怨组件而不是它的属性之一。刚刚为遇到此问题的任何其他人提到了这一点。以上是关于插入时 NHibernate 组件非空属性的主要内容,如果未能解决你的问题,请参考以下文章
从 QueryOver(或者 Fluent NHibernate)中获取魔法字符串?
Nhibernate学习教程-- 第一个NHibernate程序
nhibernate教程--条件查询(Criteria Query)