だから、私は非常に単純な MVC + EF ページを作成することを学んでいます。国のリストをdropDownListに取得することになっています。そして、私はこのエラーに遭遇します:
ObjectDisposedException はユーザー コードによって処理されませんでした: ObjectContext インスタンスは破棄されており、接続を必要とする操作には使用できなくなりました。
DBContext が破棄されることを認識していると思ったので、string と配列 string[] の値を取得します。それでもこの問題が発生するのはなぜですか?
View.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();
}
}
}