UnitOfWork in Action Filter, похоже, кэширует

У меня есть сайт MVC 3, который использует IoC (Unity), и моя модель создается с EF4 и POCO. Я использую фильтр действий для фиксации своего UnitOfWork:

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)
    {
    }
}

Однако хотя кажется, что Commit () запускается, он каким-то образом кэширует то, что считает «грязным».

Например, в моем контроллере из класса обслуживания выполняется следующее: :

var user = _userRepository.Single(u => u.Id == 2);
user.DateAdded = DateTime.Now;

Каждый раз, когда я делаю новую сборку решения и нажимаю это действие контроллера, изменение фактически фиксируется. Однако последовательные попадания в контроллер ничего не делают.

С другой стороны, если я помещаю UnitOfWork в свой контроллер и фиксирую его после вызова метода службы, он работает, как ожидалось (каждый раз, когда я запрашиваю действие контроллера ):

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();
}

Так что определенно кажется, что происходит какое-то кеширование, но я не могу понять, что кэшируется - UnitOfWork, ActionFilter или репозиторий.

Есть идеи, что может быть продолжается? А если нет, есть идеи, что еще я могу сделать для устранения неполадок?

Заранее спасибо.

12
задан Jerad Rose 17 March 2011 в 05:45
поделиться