【发布时间】:2012-02-03 15:39:31
【问题描述】:
我想知道在以下情况下如何正确处理对象。这是一个 ASP.NET MVC 控制器操作。有一个实现 IDisposable 的存储库。附件实体包含相关实体任务。当我单击附件详细信息时,它会正确显示。但是当我单击任务时,会抛出以下异常“ObjectContext 实例已被释放...”。我知道,当视图被渲染时,它被释放并且 ObjectContext 被关闭。
public ActionResult Detail(Guid id)
{
Attachment attachment = null;
using (var attachmentRepository = IoC.Resolve<AttachmentRepository>())
{
attachment = attachmentRepository.SelectByKey(id);
return View("Detail", attachment);
}
}
我的问题是在这种情况下最佳做法是什么?
这是一个好的解决方案吗?在这种情况下什么时候会处理 ObjectContext?当用户转到另一个视图时?或者垃圾收集器什么时候执行?
public ActionResult Detail(Guid id)
{
Attachment attachment = null;
var attachmentRepository = IoC.Resolve<AttachmentRepository>();
attachment = attachmentRepository.SelectByKey(id);
return View("Detail", attachment);
}
谢谢
【问题讨论】:
标签: asp.net-mvc entity-framework garbage-collection dispose