Hola a todos!
Estoy usando nHibernate + uNhAddins.
Mi repositorio es:
public class Repository<T> : IRepository<T> where T : IEntity
{
private readonly ISessionFactory factory;
protected ISession Session
{
get
{
return factory.GetCurrentSession();
}
}
public Repository(ISessionFactory factory)
{
this.factory = factory;
}
public IEnumerable<T> GetListCriteria(DetachedCriteria
criteria, params Order[] orders)
{
return RepositoryHelper<T>.GetExecutableCriteria(Session,
criteria, orders).List<T>();
}
class RepositoryHelper<T>
{
public static ICriteria GetExecutableCriteria(ISession
session, DetachedCriteria criteria, Order[] orders)
{
ICriteria executableCriteria;
if (criteria != null)
executableCriteria =
criteria.GetExecutableCriteria(session);
else
executableCriteria =
session.CreateCriteria(typeof(T));
if (orders != null)
{
foreach (Order order in orders)
executableCriteria.AddOrder(order);
}
return executableCriteria;
}
}
}
Mi servicio es:
var criteria = DetachedCriteria.For<RFConsumption>()
.Add(Restrictions.Between("CounterDtm",
dataHoraInicio, dataHoraFim));
return
rFConsumptionRepository.GetListCriteria(criteria,
Order.Desc("CounterDtm"));
Cuando se ejecuta el servicio por primera vez, los datos se devuelven
correctamente, pero si modifico el valor de un campo directamente en
la base de datos con otra aplicación, el nuevo valor no se devuelve
por NHibernate.
Si cambio el depósito:
protected ISession Session
{
get
{
factory.GetCurrentSession().Clear();
return factory.GetCurrentSession();
}
}
valor modificado por otra aplicación siempre se devuelve.
¿cuál es la mejor manera de implementar el repositorio?
Creo que Session.Clear no es la mejor manera de resolver esta
cuestión, ya que estoy usando uNhAddins en mi capa de servicio.
Gracias
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano