Pergunta

Eu tenho uma tabela chamada produtos e eu tenho a tabela StorageHistory .

Agora, o Produto contém uma referência a StorageHistory na sua mapeamentos

<set name="StorageHistories" lazy="false">
  <key column="ProductId" />
  <one-to-many class="StorageHistory" />
</set>

E ele funciona, quando eu recuperar um objeto do ORM eu recebo um ISet vazia.

O que me dá uma dor de cabeça é como construir o objeto em primeiro lugar. Quando eu faço o seguinte:

var product = new Product();
session.Save(product);

a propriedade product.StorageHistories é NULL e eu recebo um NullReferenceException. Então, como faço para adicionar itens a essa coleção, ou devo ir a maneira de adicionar-se os itens StorageHistory ao DB?

Foi útil?

Solução

Eu sempre faço o seguinte no ctor do objeto pai:

histórias = new HashedSet ();

Isto cobre o caso de uso Save (). O Load () / get () etc usecase é coberto por NHibernate como você disse.

Outras dicas

Por que não?

private ISet _StorageHistories;
public virtual ISet StorageHistories {
     protected set { _StorageHistories = value;}
     get { if (_StorageHistories == null) _StorageHistories = new HashSet();
           return _StorageHistories;
     }
}

Claro, se você passar pela dificuldade de ter um de qualquer maneira privada assim como você pode colocá-lo no construtor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top