Pergunta

Novo para NHibernate e aprendendo como estamos modificando uma solução existente para usar esta ORM. Idealmente, as classes de estrutura de armazenamento e de objetos precisam permanecer o mesmo, então Ive se deparar com um ou dois problemas de mapeamento.

Uma classe 'Dinheiro' tem um valor e moeda. O valor é uma dupla ea moeda é uma chave estrangeira para uma tabela de lista de moedas.

O dinheiro pode aparecer como um tipo em muitos objetos / mesas, então Ive criou um CompositeUserType para mapear-lo junto com um mapeamento padrão para a moeda. Esta multa funciona, mas para a vida de mim eu não posso começar a relação moeda para carga lenta do NHibernate. Usamos fluente, mas estou feliz por qualquer ponteiros em hbm.

Foi útil?

Solução

Parece que eu preciso para componentes de uso, não pode ver como adicionar referências daqueles ou CompositeUserTypes, no entanto: /

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

Atualizar

Eu tenho rodada este problema utilizando um CompositeUserType e configurar o ponto de extremidade proxy na entidade diring o método 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;
}

Não se esta é a maneira recomendada de fazer isso, mas funciona:)

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