.net 插入时NHibernate组件不为null属性
从数据库检索时,没有为任何子属性分配值的组件也将设置为null 我不介意,这只是一个额外的检查,看看组件是否为空。但是,当我尝试使用null组件更新或插入该对象到数据库中时,会出现以下错误: “not null属性引用null或瞬态[完整属性名]”这似乎很不可思议,为什么NHibernate会向我传递null,但它本身不会接受它 是否缺少一些映射选项来覆盖此选项,或者在更新或插入数据库之前,是否真的必须将组件设置为一个值.net 插入时NHibernate组件不为null属性,.net,nhibernate,components,.net,Nhibernate,Components,从数据库检索时,没有为任何子属性分配值的组件也将设置为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都会抱怨组件而不是它的一个属性。刚才提到这一点是为了其他任何遇到这个问题的人。