gpt4 book ai didi

asp.net-mvc-3 - asp.net mvc ObjectDisposedException 与 ef

转载 作者:行者123 更新时间:2023-12-01 11:04:58 24 4
gpt4 key购买 nike

我需要一些帮助来解决这个错误“ObjectContext 实例已被处置,不能再用于需要连接的操作。”

它是 asp.net mvc3、EF4 和 ms sql。这是带有两个下拉菜单的 Razor :

<div class="editRow">
@Html.DropDownListFor(m=>m.IndustryId, (SelectList)ViewBag.Industry, @Empower.Resource.General.ddlDefaultVal, new { @class = "ddl400" })
@Html.ValidationMessageFor(m => m.IndustryId)
</div>
<div class="editRow">
@Html.DropDownListFor(m=>m.ProvinceId, (SelectList)ViewBag.Province, @Empower.Resource.General.ddlDefaultVal, new {@class = "ddl400"})
@Html.ValidationMessageFor(m => m.ProvinceId)
</div>

Controller :

 IndustryService indService = new IndustryService();
ViewBag.Industry = new SelectList(indService.GetAllIndustry(), "IndustryId", "IndustryName");
ProvinceService proService = new ProvinceService();
ViewBag.Province = new SelectList(proService.GetAllProvince(), "ProvinceId", "ProvinceName");
return View();

省服务:

public IEnumerable<Province> GetAllProvince()
{
using (var context = DBContext.ObjectContext)
{
var pros = context.Provinces;
return pros;
}
}

IndustryService 和上面一样...

public class DBContext
{
private static EmpowerDBEntities _empowerContext;
public static EmpowerDBEntities ObjectContext
{
get
{
if (_empowerContext == null)
_empowerContext = new EmpowerDBEntities();
return _empowerContext;
}
}
}

我知道问题出现在第二个下拉列表中,当它试图在连接被先前的查询废弃时检索数据。请帮我解决这个问题,谢谢。

最佳答案

修复很简单 - 在使用前转换为 .ToList() 或 First()。 LINQ 已延迟执行并尝试在上下文被释放后(当您的对象结果被引用时)运行此命令 - 而不是在您实际进行调用时。您需要强制它现在运行,而上下文在范围内。

using (var context = DBContext.ObjectContext){     var pros = context.Provinces;     return pros.ToList();}

此外 - 您上面的代码正在检查 get 访问器中的空值。但是,此对象不会为 null - 它将被处置,因此您不能以这种方式进行检查,您需要检查其是否为 null 且未被处置。


public class DBContext
{
private static EmpowerDBEntities _empowerContext;
public static EmpowerDBEntities ObjectContext
{
get
{
if (_empowerContext == null || _empowerContext.IsDisposed())
_empowerContext = new EmpowerDBEntities();
return _empowerContext;
}
}
}

反正就是这样:)

关于asp.net-mvc-3 - asp.net mvc ObjectDisposedException 与 ef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6839626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com