Frage

Ich habe eine Tabelle namens Produkt und ich habe die Tabelle StorageHistory .

Nun enthält Produkt einen Verweis auf StorageHistory in seinen Mappings

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

Und es funktioniert, wenn ich ein Objekt aus dem ORM abrufen ich eine leere ISet erhalten.

Was gibt mir Kopfschmerzen ist, wie das Objekt in erster Linie zu konstruieren. Wenn ich Folgendes tun:

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

die product.StorageHistories Eigenschaft ist NULL und ich erhalte eine Nullreferenceexception. Also, wie füge ich Artikel zu dieser Sammlung, oder sollte ich gehen, um die Art und Weise sich die StorageHistory Elemente in die DB hinzufügen?

War es hilfreich?

Lösung

ich immer tun, die folgend in dem Ctor des Elternobjekts:

Historien = new HashedSet ();

Dies umfasst die Save () Fall verwenden. Die Load () / Get () etc usecase von NHibernate bedeckt ist, wie Sie angegeben.

Andere Tipps

Warum nicht?

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

Natürlich, wenn Sie die Mühe durch einen privaten sowieso zu haben könnten Sie es auch in dem Konstruktor setzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top