我问的原因是因为该HttpContext.Current.Items
集合似乎是放置IDisposable
对象的好地方,例如 aDataContext
以便存储库可以透明地访问它,而不必将与特定 ORM 技术相关的任何依赖项注入到存储库中。这也将允许存储库决定是否参与UnitOfWork
或承担实际持久化任何更改的额外责任。
例如:
这页纸:
protected void Page_Load(...)
{
Items[KeyValueFromConfigurationFile] = new DataContext();
var repo = new Repository();
var rootEntity = repo.GetById(1);
}
存储库:
public virtual TEntity GetById(int id)
{
var ctx = HttpContext.Current.Items[KeyValueFromConfigurationFile] as DataContext;
return ctx.TEntities.SingleOrDefault(p => p.Id == id);
}
当然,如果集合DataContext
中没有它,我会检查空值并执行获取 a 所需的步骤。HttpContext.Current.Items
所以,回到我最初的问题,给出上面的代码:即使抛出异常,它是否会与它的 Items 集合中包含的任何对象一起被处置?HttpContext.Current