Tengo una duda de uso de NHibernate.Linq a nivel de arquitectura y una
sugerencia de NHibernate.Linq que me gustaría que Fabio  o alguien que
conozca bien la librería criticara (de forma constructiva) antes de
agregarlo yo mismo al código:


DUDA:

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?

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.

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

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.

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

On 14 jul, 16:45, Juan Cuello <[email protected]> wrote:
> Jejeje, lo tengo en twitter pero creo que se ha cansado de mí :P
>
> On 14 jul, 14:36, Gustavo Ringel <[email protected]> wrote:
>
>
>
> > Ahi tenes otra cosa, seguir el twitter de Fabio :P.
>
> > 2010/7/14 Fabio Maulo <[email protected]>
>
> > > La ultima vez me parece que esos chicos lo anunciaron solo en twitter...
> > > que pendejos que son!
>
> > > 2010/7/14 Gustavo Ringel <[email protected]>
>
> > >> Subscribiendote a sourceforge recibis mails cuando liberan versiones.
> > >> Te recomiendo subscribirte al grupo en ingles y a NHForge, ahi tambien a
> > >> veces se anuncia.
>
> > >> Gustavo.
>
> > >> 2010/7/14 Juan Cuello <[email protected]>
>
> > >> Vale, Entonces lo usaremos pero con cuidado :)
>
> > >>> Y eso! Yo también quiero saber cuándo se libera NH3! En cada iteración
> > >>> estoy más enamorado de NH :)
>
> > >>> Fabio, tenéis algún sistema de mailing para notificación de cambios de
> > >>> NH o liberación de releases? Sería muy interesante y yo mismo me
> > >>> suscribiría para empezar :)
>
> > >>> On 13 jul, 16:29, Edgar Ramos <[email protected]> wrote:
> > >>> > Por cierto cuando se libera nh3, (o ya se libero oficialmente y no me
> > >>> enterado)
>
> > >>> > Saludos
>
> > >>> > Edgar
>
> > >>> > El día 13 de julio de 2010 09:19, José F. Romaniello
> > >>> > <[email protected]> escribió:
>
> > >>> > > a mi me funciona bien, es muy difícil de decir si esta listo para
> > >>> > > producción, lo único que te puedo decir que la versión que esta en
> > >>> > > NHibernate 3 (trunk) session.Query<T>()
> > >>> > > funciona mucho mejor que la que esta en nhcontrib para 2.1
> > >>> > > (session.Linq<T>())
>
> > >>> > > El 13 de julio de 2010 11:14, Juan Cuello <[email protected]>
> > >>> escribió:
>
> > >>> > >> Hola,
>
> > >>> > >> Pregunta simple a quien lo haya utilizado:
>
> > >>> > >> ¿Funciona bien NHibernate.Linq o tiene fallos? ¿Podría utilizarse 
> > >>> > >> en
> > >>> > >> un entorno de producción?
>
> > >>> > >> Muchas gracias
>
> > >>> > >> --
> > >>> > >> Para escribir al Grupo, hágalo a esta dirección:
> > >>> > >> [email protected]
> > >>> > >> Para más, visite:http://groups.google.com/group/NHibernate-Hispano
>
> > >>> > > --
> > >>> > > Para escribir al Grupo, hágalo a esta dirección:
> > >>> > > [email protected]
> > >>> > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano
>
> > >>> --
> > >>> Para escribir al Grupo, hágalo a esta dirección:
> > >>> [email protected]
> > >>> Para más, visite:http://groups.google.com/group/NHibernate-Hispano
>
> > >>  --
> > >> Para escribir al Grupo, hágalo a esta dirección:
> > >> [email protected]
> > >> Para más, visite:http://groups.google.com/group/NHibernate-Hispano
>
> > > --
> > > Fabio Maulo
>
> > >  --
> > > Para escribir al Grupo, hágalo a esta dirección:
> > > [email protected]
> > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano

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