2010-06-21 12 views
6

Cuando intento consultar una tabla utilizando CreateSqlQuery y convertirla a una entidad que contiene propiedad de fórmula, obtengo la siguiente Adoexception.CreateSqlQuery en entidad con propiedad de fórmula

"El valor no puede ser nulo nombre Parámetro:. FieldName"

En primer lugar, ¿es posible utilizar el createSQLQuery en la entidad que tiene la fórmula de asignación?

Respuesta

7

Es posible usar CreateSQLQuery con fórmulas.

Aquí hay una prueba de concepto. Mapping (clase no es difícil de adivinar):

<class name="Foo"> 
    <id name="Id"> 
    <generator class="hilo"/> 
    </id> 
    <property name="Data"/> 
    <property name="DataX2" formula="Data * 2"/> 
</class> 

Y aquí está una consulta:

var foos = session.CreateSQLQuery(
        @" 
        select Id   as {foo.Id}, 
          Data  as {foo.Data}, 
          Data + Data as {foo.Data2} 
        from Foo 
        ") 
        .AddEntity("foo", typeof(Foo)) 
        .List<Foo>(); 

Si se mira de cerca, verá que estoy usando una fórmula diferente a la declarada en el mapeo NHibernate permite cualquier cosa siempre que todas las propiedades estén en la consulta.

Sugiero que lea 17.1.2. Entity queries y los siguientes puntos.

+0

Su solución en este caso parece ser sólo un trabajo en torno a un error real que existe. –

+0

@GaryB si cree que hay un error, no dude en abrir un problema en el rastreador, asegurándose de incluir una prueba de unidad defectuosa, –

+0

. No estoy familiarizado con la relación entre Nhibernate y el seguimiento de problemas de Hibernate. Estoy diciendo que es un error porque ha sido declarado uno dentro de Hibernate, pero aparentemente no está dentro de Nhibernate, por lo que no es completamente justo para mí llamarlo uno con respecto a Nhibernate. En este punto, estoy contento con la solución de alias, por lo tanto no creo que me interese crear un problema de Nhibernate. –

Cuestiones relacionadas