2011-03-30 16 views
21

Si busco ejemplos de consulta API de NHibernate Criteria en Internet, hay ejemplos que usan Restricciones y otros usan Expresión. ¿Cuáles son las diferencias entre esos dos?Restricción de criterios de NHibernate frente a Expresión

Por ejemplo:

posts = session.CreateCriteria<Post>() 
    .Add(Expression.Eq("Id", 1)) 
    .List<Post>(); 

posts = session.CreateCriteria<Post>() 
    .Add(Restrictions.Eq("Id", 1)) 
    .List<Post>(); 

Respuesta

16

Creo que las restricciones se lanzaron en NH2 y ahora es la forma preferida.

De acuerdo con ReSharper cada vez que use la expresión me sale una pista que decir Access to a static member of a type via a derived type

también according to this post por Ayende: -

prefieren utilizar las restricciones en lugar de la clase de expresiones para definir Criterios consultas .

1

Expresión hereda de Restricciones pero se recomienda el uso de restricciones. La expresión es aparentemente obsoleta.

De acuerdo con Ayende (old post about NH 2.0), la documentación generalmente se referirá a Restricciones.

12

En el código fuente de namespace NHibernate.Criterion.Expression es dice que "Esta clase es Restricciones semi-desaprobado utiliza las"

+0

+1 para apuntar al código fuente. –

Cuestiones relacionadas