Frage

Neu bei NHibernate und es zu lernen, wie wir eine bestehende Lösung modifizieren diese ORM zu verwenden. Im Idealfall müssen die Speicherstruktur und Objektklassen gleich bleiben, so Ive über ein oder zwei Mapping-Probleme kommen.

Eine Klasse ‚Geld‘ hat einen Wert und Währung. Der Wert ist ein doppelter und die Währung ist ein Fremdschlüssel zu einer Liste Tabelle von Währungen.

Geld kann als eine Art auf vielen Objekte / Tabellen erscheinen, so Ive eine CompositeUserType erstellt es zur Karte mit einem Standard-Mapping Währung zusammen. Dies funktioniert gut, aber für das Leben von mir kann ich nicht die Währung Beziehung zu faul Last von NHibernate bekommen. Wir verwenden fließend, aber ich bin glücklich, für alle Hinweise in hbm.

War es hilfreich?

Lösung

Sieht aus wie ich Komponenten verwenden müssen, kann nicht sehen, wie Referenzen hinzufügen von denen oder CompositeUserTypes, aber: /

https://forum.hibernate.org/viewtopic.php ? f = 1 & t = 947719 & start = 0

https://web.archive.org/web/20090227235136/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008 /08/13/a-fluent-interface-to-nhibernate---part-2---value.aspx

http://wiki.fluentnhibernate.org/show/StandardMappingComponents

UPDATE

Ich habe rund um dieses Problem wird von einem CompositeUserType verwenden und den Proxy-Endpunkt auf der Stelle geschaffen diring die NullSafeGet () Methode:

public virtual object NullSafeGet(IDataReader dr, string[] names, ISessionImplementor session, object owner)
{
    if (dr == null)
    {
        return null;
    }

    Money value = new Money()
    {
        Value = (double)NHibernateUtil.Double.NullSafeGet(dr, names[0], session, owner)
    };

    string entityName = session.BestGuessEntityName(value.Currency);
    value.Currency = (CurrencyDetails)session.InternalLoad(entityName, (object)DEFAULT_CURRENCY_ID, false, false);

    return value;
}

Nicht sicher, ob dies der empfohlene Weg ist, es zu tun, aber es funktioniert:)

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