所以,我正在学习制作一个非常简单的 MVC + EF 页面。它应该将国家列表放入下拉列表中。我遇到了这个错误:
用户代码未处理 ObjectDisposedException:ObjectContext 实例已被释放,不能再用于需要连接的操作。
我以为我知道 DBContext 将被释放,所以我提取了字符串和数组 string[] 中的值。为什么我还是会遇到这个问题?
查看.cshtml...
<select id="register-country">
@foreach (var country in ViewBag.Countries) { //******** ERROR HERE ********
<option value="@country[0]">@country[1]</option>
}
</select>
控制器.cs ...
public virtual ActionResult RegisterDialogPartial() {
var csm = new CountryStateModelRepository();
ViewBag.Countries = csm.GetCountries();
return PartialView(MVC.Shared.Views._RegisterDialogPartial);
}
数据访问层...
public class CountryStateModelRepository {
public IQueryable<string[]> GetCountries() {
using (var db = new CountryStateModelContainer()) {
return db.Country.Select(r => new string[] { r.CountryISO3, r.CountryName });
}
}
public IQueryable<string> GetCountryStates(string countryISO3) {
using (var db = new CountryStateModelContainer()) {
return db.CountryState.Filter(r => r.CountryISO3 == countryISO3.ToUpper()).Select(r=>r.CountryISO3).AsQueryable();
}
}
}