Entiendo! :) Gracias

Tanto me permite EQO acotar como elegir la tecnología a utilizar. Lo
considero la mejor opción,  aunque conlleva tener que realizar
"posiblemente" muchos cambios en la vida del dao.

Mi frase siempre es: Si existiera la mejor forma de hacer las cosas,
sólo existiría una forma...

Y qué me dices a cerca de QueryOptions de NHibernate.Linq? Se utiliza
sólo internamente?

Esta era mi sugerencia:

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?


On 14 jul, 18:19, Fabio Maulo <[email protected]> wrote:
> Te cuento lo que pasó esta mañána.
> El lead de un prj en el que trabajo me mandó un mail, un IM en Gtalk y un IM
> en Skype.... yo a esa hora dormia...
> El pedido de ayuda era fuerte...
> Allí ya estamos usando EQO pero me quedó claro que no se entendió lo basico.
> El problema era que el provider LINQ no suporta SelectMany...
> Como estabamos en una EQO y el test ya existía me llevó un minuto (y digo en
> serio) escribir esta HQL
>
> return sessionFactory.GetCurrentSession().CreateQuery("select a from Company
> c join c.Addresses a where c.Id =
> :pCompany").SetGuid("pCompany",CompanyId).List<Address>();
>
> Test en verde, y commit.
>
> Luego se me puso a discutir que la quería en LINQ o sea
> var companies = sessionFactory.GetCurrentSession().Query<Company>();
> return
> from c in companies
> from a in c.Addresses
> where c.Id == CompanyId
> select a;
>
> Test en verde y commit con el siguiente comment: Because Michele taste, same
> query but using LINQ
>
> Ya que yo le dije de controlar la SQL, Michele fue a controlarla y ahora el
> codigo es así
> return
> this.sessionFactory.GetCurrentSession().GetNamedQuery("GetAddressesFromComp 
> any").SetGuid("pCompany",
> this.CompanyId).List<Address>();
>
> eso es lo que pasa con EQO : una clase, una responsabilidad y adentro la
> responsabilidad la resolves con lo que mas es acorde al resultado que
> buscas.
>
> 2010/7/14 Juan Cuello <[email protected]>
>
>
>
>
>
> > 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
>
> --
> 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

Responder a