我正在使用unity IOC将dbcontext注入Web API的相关类中。我正在使用自定义生命周期管理器,如下所示:
public class PerRequestLifetimeManager : LifetimeManager
{
private readonly object key = new object();
public override object GetValue()
{
if (HttpContext.Current != null &&
HttpContext.Current.Items.Contains(key))
return HttpContext.Current.Items[key];
else
return null;
}
public override void RemoveValue()
{
if (HttpContext.Current != null)
HttpContext.Current.Items.Remove(key);
}
public override void SetValue(object newValue)
{
if (HttpContext.Current != null)
HttpContext.Current.Items[key] = newValue;
}
}
这是在global.asax中注入的:
// context - 每个http请求一个上下文 container.RegisterType(new PerRequestLifetimeManager());
在dbcontext类中,我们有:
public class BudgetControlDbContext : DbContext, IBudgetControlDbContext
{
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
this._isDisposed = true;
}
public bool IsDisposed
{
get { return this._isDisposed; }
}
}
问题: 现在如何处理dbcontext以及该代码应该在哪里?