因此,我正在學習製作一個非常簡單的MVC + EF頁面。它應該將一個國家列表放入dropDownList中。我碰到這個錯誤:EF4 DBContext和MVC3。 ObjectContext實例已被處置,不能再用於需要連接的操作
ObjectDisposedException被用戶代碼未處理:ObjectContext實例已被處置,不能再用於需要連接的操作。
我以爲我知道,DBContext將被處置,所以我拉起字符串和數組字符串[]中的值。爲什麼我仍然遇到這個問題?
View.cshtml ...
<select id="register-country">
@foreach (var country in ViewBag.Countries) { //******** ERROR HERE ********
<option value="@country[0]">@country[1]</option>
}
</select>
Controller.cs ...
public virtual ActionResult RegisterDialogPartial() {
var csm = new CountryStateModelRepository();
ViewBag.Countries = csm.GetCountries();
return PartialView(MVC.Shared.Views._RegisterDialogPartial);
}
DataAccessLayer ...
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();
}
}
}
向延遲執行說聲問候。如果返回'IQueryable',則不能處理上下文。您必須在通過調用例如'ToList'來處理上下文之前執行查詢。 –