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 <[email protected]> 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 > <[email protected]>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: > > [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
