LINQ to NHibernate elimina paréntesis en la cláusula where:Agrupación en condición está siendo cayó
session.Query<MyEntity>().Where(x => (x.MyProp1 < end && x.MyProp1 > start) ||
(x.MyProp2 < end && x.MyProp2 > start));
Esto se traduce en la siguiente consulta (tenga en cuenta el paréntesis que falta):
select <columns> from MY_ENTITY where MY_PROP1 < :p0 and MY_PROP1 > :p1 or
MY_PROP2 < :p2 and MY_PROP2 > :p3;
Este es un gran problema , porque cambia la condición de consulta significativamente.
¿Es esto un problema conocido o estoy haciendo algo mal?
Hmm, parece que ha encontrado un error, puede dividir la consulta en dos y luego fusionarlas, pero aún así debería funcionar – mfeineis
¿La consulta no se ejecuta realmente correctamente cuando se ejecuta? No puedo estar seguro, pero es posible que debido al orden de las operaciones no se requiera el paréntesis. Esto es al menos factible. – Servy
@Servy: Lo has clavado. [Y tiene prioridad sobre OR] (http://docs.oracle.com/html/A95915_01/sqopr.htm#i1004611). Por favor, publícalo como una respuesta para que yo pueda aceptarlo. –