Tengo un sitio MVC 3 que usa IoC (Unity) y mi modelo se genera con EF4 y POCO. Estoy utilizando un filtro de acción para comprometer mi UnitOfWork:UnitOfWork in Action El filtro parece estar en caché
public class UseUnitOfWorkAttribute : ActionFilterAttribute, IActionFilter
{
private readonly IUnitOfWork _unitOfWork;
public UseUnitOfWorkAttribute()
{
_unitOfWork = IoCFactory.Instance.CurrentContainer.Resolve<IUnitOfWork>();
}
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
{
_unitOfWork.Commit();
}
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
}
}
Sin embargo, a pesar de que la Commit()
parece ser cada vez disparado, de alguna manera parece ser el almacenamiento en caché lo que cree que es "sucio".
Por ejemplo, en mi controlador, el siguiente es ejecutado de una clase de servicio:
var user = _userRepository.Single(u => u.Id == 2);
user.DateAdded = DateTime.Now;
Cada vez que hago una construcción nueva de la solución y golpear esta acción del controlador, el cambio que realmente se cometa. Sin embargo, las visitas sucesivas al controlador no hacen nada.
Por otro lado, si pongo un UnitOfWork en mi controlador y COMPROMÉTANSE siguiendo el llamado método de servicio, que funciona como se espera (cada vez que lo solicite la acción del controlador):
public AccountController()
{
_unitOfWork = IoCFactory.Instance.CurrentContainer.Resolve<IUnitOfWork>();
}
public ActionResult Test()
{
var user = _userRepository.Single(u => u.Id == 2);
user.DateAdded = DateTime.Now;
_unitOfWork.Commit();
}
por lo que definitivamente parece que está ocurriendo algún tipo de almacenamiento en caché, pero no puedo entender qué se almacena en caché: UnitOfWork, ActionFilter o el repositorio.
¿Alguna idea de lo que podría estar pasando? Y si no, ¿qué ideas podría hacer para solucionarlo?
Gracias de antemano.
Gracias, esto es excatly lo que está pasando. Traté de encontrar información sobre el almacenamiento en memoria caché del filtro de acción, pero nunca encontré esto en mis búsquedas. –
¡Buena captura, @Darin! – neontapir
Ojalá pudiera votar esto 5 veces. Killer al actualizar aplicaciones MVC 1/2. – Paul