2009-07-22 5 views
1

Компоненты, которые не имеют значения, назначенного для любого дочернего свойства, также будут установлены в нуль при извлечении из базы данных.NHibernate Component not-null свойство при вставке

Я не против этого, это просто дополнительная проверка, чтобы увидеть, является ли компонент нулевым или нет. Однако, когда я пытаюсь затем обновить или вставить этот объект в базу данных с нулевым компонентом, я получаю ошибку:

«Не-null свойство ссылается на нуль или переходный [полное имя свойства]», что кажется смешным, как выглядит NHibernate передаст мне NULL, но он не примет его сам.

Есть ли какой-либо параметр сопоставления, который мне не хватает, чтобы переопределить это или действительно нужно установить компонент в значение перед обновлением или вставкой в ​​базу данных?

Благодаря

ответ

3

Если все свойства равны нулю компонент равна нулю сам, когда вы пишете, это нормальное поведение.

Когда вы получаете из базы данных, если используете авто-свойство с публичным сетевым устройством, у вас может возникнуть такая проблема.

, если у вас есть это:

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,

Kris-I,

+0

Да, я предполагаю, что я делаю. Автоматические свойства действительно делают меня ленивым, если это даже не входит в мою голову! Спасибо –

+0

Если я знаю, это потому, что я тоже ленив и ... имеет такую ​​же проблему несколько недель назад ;-) –

+1

На самом деле получается, что это свойство было на компоненте, который был установлен в null, однако NHibernate всякий раз, когда он возвращался, ошибка вызывала жалобы на компонент, а не на его свойства. Просто упомянул об этом для любого другого, который сталкивается с этим вопросом. –

Смежные вопросы