in line

El 14 de julio de 2010 12:28, Juan Cuello <[email protected]> escribió:

> Suponiendo que usamos Daos o repositorios, el uso de linq debería
> quedar encapsulado en los métodos de la implementación de los daos (o
> repositorios) o debería exponerse INHibernateQueryable<T> o
> IOrderedQueryable<T> para que se pueda explotar el linq desde
> cualquier punto?
>

nunca INhibernateQueryable, ni IOrderedQueryable. A lo sumo IQueryable.


>
> 1) Exponer INHibernateQueryable<T> tiene el problema de que se
> necesita desde donde se use el dao una referencia a NHibernate.Linq y
> a NHibernate, por tanto, si tenemos un ensamblado con las interfaces
> de los Daos, creo que no es una solución correcta, ya que sometemos
> las interfaces a la tecnología subyacente.
>
>
nunca INHibernateQueryable.


> 2) Exponer IOrderedQueryable<T> elimina la necesidad de referencias
> pero perdemos la capacidad de especificar las QueryOptions ¿?
>
>
Para que usas QueryOptions vos?


> 3) Encapsular la consulta linq dentro de un método del dao elimina los
> problemas 1 y 2, pero deberemos crear una función para cada consulta
> con sus diferentes parámetros, cosa que nos podemos evitar permitiendo
> el uso de linq. Aunque de esta forma acotamos el ámbito al realizar
> tests de los Daos y podemos evitar las limitaciones que tenga la
> librería.
>

Muy buena pregunta, ahora te toca leer:
http://fabiomaulo.blogspot.com/2010/07/enhanced-query-object.html
http://jfromaniello.blogspot.com/2010/06/linqspecs-why.html




>
> SUGERENCIA
>
> En NHibernateExtensions hay una serie de funciones y, en una en
> especial:
>
>        public static INHibernateQueryable<T> Linq<T>(this ISession session)
>                {
>                        QueryOptions options = new QueryOptions();
>                        return new Query<T>(new
> NHibernateQueryProvider(session, options),
> options);
>                }
>
>  Se crea QueryOptions sin posibilidad de especificar opciones. ¿Sería
> incorrecto crear otra extensión del tipo?:
>
>        public static INHibernateQueryable<T> Linq<T>(this ISession session,
> QueryOptions options)
>                {
>                        QueryOptions options = options ?? new
> QueryOptions();
>                        return new Query<T>(new
> NHibernateQueryProvider(session, options),
> options);
>                }
>
> Para dar la posibilidad de especificar las opciones en la misma
> extensión? O se debe hacer de otra forma la especificación de
> opciones?
>
> Muchas gracias
>


Como te pregunte antes , no se para que cosas usas QueryOptions... Creo que
ni si quiera esta en el nuevo provider de linq.

-- 
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