我實現了一個基本的控制器實例化每個請求一個新DbContext
:如果使用每個請求一個的DbContext實例,我應該處理的每個請求的情況下,以及:
public class BaseController: Controller
{
protected HawkHeadDbContext Db { get; set; }
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
Db = new HawkHeadDbContext();
}
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
Db.SaveChanges();
Db.Dispose();
}
}
我只是有點擔心,調用可能會成爲CPU密集型,也許我應該在Dispose
方法BaseController
中處理上下文。我懷疑控制器是爲每個請求實例化的,但不知道是否在每個請求後調用Dispose
,或者在常規的「DisposeAllControllers」類型操作中調用。
「當使用Web應用程序,使用**每個請求的上下文實例。* *「https://msdn.microsoft.com/en-us/data/jj729737.aspx – magicandre1981
@ magicandre1981我爲每個請求使用一個實例。你在'OnActionExecuting'中怎麼做'Db = new HawkHeadDbContext();'?我不是在問這個問題,而是關於什麼時候處理上下文,因爲這樣做可能會延長請求的時間。我可能不會在'OnActionExecuted'中進行處理,但是隨後會有越來越多的未處理但未使用的上下文,我可能會以其他一些批處理方式處理這些上下文。 – ProfK