Я новичок в C # и MVC в целом, и я создал свой собственный небольшой сайт блога в качестве тестового проекта. Хотя на данный момент большинство вещей работает, у меня возникли проблемы с выбором нескольких столбцов из запросов LINQ. Только после того, как я наткнулся на вопрос о SO, я понял, что могу использовать сгенерированные классы сущностей в качестве строго типизированных моделей, чтобы справиться с этим. Мне это было нужно, так как я создавал уровень базы данных (который я также не использовал раньше) и попытка передать анонимные типы через этот уровень не сработала. Я понимаю, почему это было так, поэтому я удовлетворен тем, что двигаюсь в правильном направлении.
Однако этот подход, похоже, вызвал у меня еще одну проблему. Я пробовал простой тест, чтобы получить 2 столбца из моей таблицы категорий: CategoryID и Name. Сначала я попробовал следующее:
using (MyEntities db = new MyEntities())
{
var model = from c in db.Categories
select new Category { CategoryID = c.CategoryID, Name = c.Name };
return View(model);
}
Это дало мне ошибку ObjectContext is disposed при попытке перебрать модель в представлении. Прочитав этот вопрос , я попытался переместить оператор return за пределы блока using и вызвать AsEnumerable () в модели следующим образом:
IEnumerable model;
using (MyEntities db = new MyEntities())
{
model = from c in db.Categories
select new Category { CategoryID = c.CategoryID, Name = c.Name };
}
return View(model.AsEnumerable());
Однако это все еще дает мне ту же ошибку ObjectContext is disposed, когда Я пытаюсь перебрать модель в представлении. Так что теперь я не понимаю, почему я получаю ошибку. Я даже попытался полностью удалить директиву using, но это дает мне другую ошибку:
«Сущность или сложный тип MyProjectModel.Category не может быть сконструирован в запросе LINQ to Entities».
Если это поможет, вот соответствующий код для моей точки зрения:
@model IEnumerable
@foreach (var category in Model)
{
@category.Name
}
Будет ли кто-нибудь достаточно любезен, чтобы просветить меня относительно того, что мне не хватает?
Спасибо.