我有一個使用IoC(Unity)的MVC 3網站,我的模型是用EF4和POCO生成的。我使用的是動作過濾器提交我的UnitOfWork:UnitOfWork in Action似乎是緩存
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();
}
所以看起來像某種緩存正在進行,但我無法弄清楚什麼是緩存 - 單元工作室,ActionFilter,或存儲庫。
任何想法可能會發生什麼?如果沒有,我還有什麼想法可以解決問題?
在此先感謝。
謝謝,這是令人興奮的發生了什麼事情。我試圖找到有關操作過濾器緩存的信息,但從未在我的搜索中遇到過這種情況。 – 2011-03-17 12:27:43
好,@Darin! – neontapir 2011-03-17 13:37:21
我希望我能投這個5倍。 Killer升級MVC 1/2應用程序時。 – Paul 2013-05-01 17:31:35