Question

Nouvelle à NHibernate et l'apprentissage comme nous modifions une solution existante pour utiliser ce ORM. Idéalement, les classes de structure de stockage et objet doivent rester les mêmes, Ive rencontré un ou deux problèmes de cartographie.

Une classe « argent » a une valeur et de la monnaie. La valeur est une double et la monnaie est une clé étrangère à une table de liste des devises.

L'argent peut apparaître comme un type de nombreux objets / tables, donc Ive a créé un CompositeUserType pour mapper avec un mapping standard à la monnaie. Cela fonctionne très bien, mais pour la vie de moi je ne peux pas obtenir la relation de change à la charge paresseuse de NHibernate. Nous utilisons couramment, mais je suis heureux pour tous les pointeurs dans HBM.

Était-ce utile?

La solution

On dirait que je dois utiliser des composants, ne peut pas voir comment ajouter des références de ceux ou CompositeUserTypes, bien que /

https://forum.hibernate.org/viewtopic.php ? f = 1 et 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

J'ai contourné ce problème en utilisant un CompositeUserType et la mise en place du point de terminaison proxy sur l'entité diring la méthode NullSafeGet ():

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;
}

Je ne sais pas si cela est la méthode recommandée de le faire, mais cela fonctionne:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top