Para lo que comentas, estoy revizando este framework http://linqspecs.codeplex.com/, el cual implementa specification pattern, si descargas el codigo (con su ejemplo), podrás analizar justamente lo que comentas, en el ejemplo que expone, esta repository+nh
Saludos Edgar El día 20 de julio de 2010 16:50, Pardety <jmpa...@gmail.com> escribió: > Cuando digo evidente me refiero que la acción en sí está definida. Se > que objeto voy a borrar o guardar. Con la consulta linq todavía no se > cual es la expresión de la query, si lo que persigo es poder usar linq > en mi capa de negocio y evitar los repositorios tipo > GetByNameAndStreet. > Si se va a guardar se abre una transacción, se llama al método save y > se hace un commit ¿Pongo lo del try catch el rollback....? > Si se hace una consulta usando ICriteria, igual, la llamada a la base > de datos queda encapsulada. La pregunta es respecto a consultas > usando linq, o al menos usando esta implementación, ¿como se hace?. > ¿Añadiendo métodos al repositorio para que abra y cierre > transacciones? ¿En este caso no se usan? > > saludos > > > > On 20 jul, 13:47, José F. Romaniello <jfromanie...@gmail.com> wrote: >> cual es la forma evidente de manejar los ámbitos de transacciones? Me >> gustaría ver aunque sea en pseudocódigo como lo pondrías vos. >> >> El 20 de julio de 2010 04:26, Jose Manuel Pardo Godoy >> <jmpa...@gmail.com>escribió: >> >> >> >> > Hola a todos >> >> > Estoy dando mis primeros pasos con nhibernate y me surge la siguiente duda. >> > He visto implementaciones de repositorios que implementan (perdón por la >> > redundancia) el interfaz IQueryable y hacen uso del nhlinq. >> > Mi pregunta es ésta: >> > Dentro de las buenas prácticas se recomienda que hay que encapsular todas >> > las acciones dentro de una transacción,con operaciones de borrado y >> > actualización es evidente como realizar esta encapsulación., pero ¿Cómo >> > hacerlo cuando se usa linq para consultas? >> >> > Esta es la implementación de mi repositorio de solo lectura, >> >> > public class Repository<T> : IRepository<T> where T : IEntity >> >> > { >> > private readonly ISessionFactory _sessionFactory; >> >> > protected Repository(ISessionFactory sessionFactory) >> >> > { >> > _sessionFactory = sessionFactory; >> > } >> >> > public Expression Expression >> >> > { >> > get >> > { >> > return >> > _sessionFactory.GetCurrentSession().Linq<T>().Expression; >> >> > } >> > } >> >> > public Type ElementType >> > { >> >> > get { return >> > _sessionFactory.GetCurrentSession().Linq<T>().ElementType; } >> >> > } >> >> > public IQueryProvider Provider >> > { >> > get { return >> > _sessionFactory.GetCurrentSession().Linq<T>().Provider; } >> >> > } >> >> > public IEnumerator<T> GetEnumerator() >> >> > { >> > return >> > _sessionFactory.GetCurrentSession().Linq<T>().GetEnumerator(); >> >> > } >> >> > IEnumerator IEnumerable.GetEnumerator() >> >> > { >> > return GetEnumerator(); >> > } >> > } >> >> > Gracias por anticipado >> >> > -- >> > Saludos >> >> > José M. Pardo >> >> > -- >> > Para escribir al Grupo, hágalo a esta dirección: >> > NHibernate-Hispano@googlegroups.com >> > Para más, visite:http://groups.google.com/group/NHibernate-Hispano > > -- > Para escribir al Grupo, hágalo a esta dirección: > NHibernate-Hispano@googlegroups.com > Para más, visite: http://groups.google.com/group/NHibernate-Hispano -- Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano@googlegroups.com Para más, visite: http://groups.google.com/group/NHibernate-Hispano