¿Cómo uso de NHibernate criterios de consultas a las asociaciones de carga sobre la base de condiciones adicionales

StackOverflow https://stackoverflow.com/questions/3577577

  •  01-10-2019
  •  | 
  •  

Pregunta

Vamos a decir que tienen un gato que tiene dos propiedades:

  • FavoriteKitten
  • SecondFavoriteKitten

Estos gatitos son discriminadas por su rango.

Al cargar un gato, quiero que el gatito con el rango de "1" a ser FavoriteKitten, y el gatito con el grado de "2" para ser SecondFavoriteKitten.

Los subyacentes miradas base de datos como:

table Cat
----------------
CatId


table Kitten
-----------------
KittenId
CatId
Rank

Mis PROYECCIÓN tiene el aspecto:

<class name="Cat">
  ... other stuff
  <one-to-one name="FavoriteKitten" class="Kitten" property-ref="Cat" cascade="all-delete-orphan" />
  <one-to-one name="SecondFavoriteKitten" class="Kitten" property-ref="Cat" cascade="all-delete-orphan" />
</class>

Mis criterios de consulta se parece a

Cat cat = sess.CreateCriteria(typeof(Cat))
.CreateAlias("FavoriteKitten", "kt1")
.Add(Expression.Eq("kt1.Rank", "1"))
.CreateAlias("SecondFavoriteKitten", "kt2")
.Add(Expression.Eq("kt2.Rank", "2"))
.UniqueResult();

El problema es que una vez cargado, tanto FavoriteKitten y SecondFavoriteKitten son los mismos gatito:. El uno con un rango de "2"

he dejado algo fuera de los criterios? O voy de este por el camino equivocado?

¿Fue útil?

Solución

Diego, otra vez en la lista de correo nhibernate, me ayudó a ver el error de mis maneras. Todo lo que había estructurado mal.

Por su sugerencia, decidí mapa gatitos, ya que está en la base de datos; como listas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top