Osea que el contexto de tu transacción equivale a un método en el
repositorio:
Repositorio
Guardar( entidad)
Abrir Transaccion
session.Save(...)
Commit o Rollback
?
El 20 de julio de 2010 18:50, Pardety <[email protected]> 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 <[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
>
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano