ObjectDisposedException после возврата от LINQ в SQL Query
-
13-12-2019 - |
Вопрос
Я использую MVC3 с помощью .NET 4.0, и когда призывает мою форму создания, я получаю ObjectDisposedException, говоря, что объект был утилизирован.Исключение Ocurrs на этом операторе страницы MVC3:
@Html.DropDownListFor(model => model.Country, GeneralActivity.GetCountriesMVC("NL"))
.
и взысканный метод похож на это:
IEnumerable<SelectListItem> GetCountriesMVC(string preselectCountryCode)
{
... some error checking code omited for simplicity ...
IEnumerable<SelectListItem> qlist;
using (Data.MyDataContext ctx = new Data.MyDataContext()) {
qlist = from p in ctx.Countries select new SelectListItem {
Text = p.CountryName,
Value = p.CountryCodeId,
Selected = (p.CountryCodeId == preselectCountryCode)
};
}
return qlist;
}
.
Во время отладки i выполняется до оператора возврата, а затем оно уходит и приводит меня к вызовому оператору @HTML на странице MVC, и исключение бросается.
Экземпляр QList объявляется вне оператора с использованием и инициализируется запросом LINQ, поэтому я не понимаю, почему он говорит, что объект был утилизирован.
Решение
На самом деле вы не выполняете запрос - поэтому, когда вы пытаетесь получить доступ к QList, он пытается подключиться к базе данных, и соединение закрыто.
Попробуйте лить запрос в список, чтобы он будет храниться в памяти:
qlist = (from p in ctx.Countries select new SelectListItem {
Text = p.CountryName,
Value = p.CountryCodeId,
Selected = (p.CountryCodeId == preselectCountryCode)
}).ToList();
.