Hola a todos los gurús de NHibernate.Restricción en la recopilación con disyunción utilizando NHibernate QueryOver
Dadas estas dos clases:
public class User {
long Id;
string Name;
}
public class Project {
long Id;
User Owner;
IList<User> Managers;
...
}
Quisiera hacer una consulta usando QueryOver (sin utilizar criterios alias "cadena mágica"), para obtener todos los proyectos que tienen usuario1 como propietario O como uno de los gerentes.
sé tener por separado:
- proyectos se tienen usuario1 como Propietario:. Session.QueryOver <> Proyecto >>() Donde (p => p.Owner == usuario1)
- get como gerente:. session.QueryOver <>() JoinAlias (p => p.Managers,() => gerente) .Where (() => gestor de == usuario1)
pero I don' Sé cómo escribir la disyunción.
Si alguien tuviera una idea, me ayudaría mucho.
Gracias de antemano,
Chris
Gracias, De hecho tenemos que hacer la igualdad en las ID de los objetos y no en objetos .Where (w => manager.Id == user1.Id || w.Owner.Id == user1.Id) Además, esto no da el resultado esperado porque hace una unión interna entre Proyecto y Usuario, y por lo tanto, no obtiene proyectos que tengan usuario1 como propietario pero que aún no tenga ningún administrador :( – Chris
Lo siento, no estaba 100% seguro de lo que quería filtrar y no mencionó que quería una unión a la izquierda ... – Rippo
No lo siento, no se pudo saber :) .Left.JoinAlias (...) Hizo el truco. Muchas gracias Rippo! – Chris