Hi, hoy tuve que cambiar una consulta que estaba en criteria escrita por un
programador que trabajo conmigo. Como aca se han dado varias veces que gente
habla de usar mas bien criteria por alguna razon, es un buen examen para la
vista decidir que es mejor.

Las 2 razones por las que la cambie:

1) La consulta no es dinamica o sea que no obtengo ningun beneficio por
armar un criteria
2) La consulta en criteria es dificil de entender
3) En tiempo de ejecucion NHibernate me va a decir si por ejemplo
bag.NextAction no existe. El criteria solo fallara al llegar al test o al
llegar en ejecucion a la consulta especifica.

Aca va la consulta en criteria (usando Or que no estoy seguro que estuviera
en NH 1.2.1, alla era mas feo todavia Disjunction)

    Expression.Eq(Bag.Properties.Workstation, workstation),
    Expression.IsNotNull(Bag.Properties.NextAction),
    Expression.IsNull(Bag.Properties.PreviousAction),
    Expression.Or
        (Expression.Eq(Bag.Properties.RiskLevel, nonSelecteeRiskLevel),
        (Expression.IsNull(Bag.Properties.RiskLevel)))

y aca en HQL

from Bag bag
where bag.Workstation = :workstation
and bag.NextAction is not null
and bag.PreviousAction is null
and (bag.RiskLevel is null or bag.RiskLevel = :risklevel)
Bueno, no se que opinan ustedes...para mi en este caso Criteria es una
demostracion de cuan poco flexible es la sintaxis de C# para escribir algo
sencillo.

Gustavo.

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

Responder a