Исходя из этого вопроса , я использую простой класс ViewModel для проверки передачи строго типизированной модели в представление. В то время как ответ Дарина на мой первоначальный вопрос решил проблему, с которой я столкнулся, теперь я не могу почесать голову, почему я не могу сделать то же самое с классом, созданным EF. Вот что у меня есть:
public ActionResult Test()
{
using (MyEntities db = new MyEntities())
{
var model = from c in db.Categories
select new CategoryViewModel { CategoryID = c.CategoryID, Name = c.Name };
return View(model.ToList());
}
}
Это CategoryViewModel:
public class CategoryViewModel
{
public int CategoryID { get; set; }
public string Name { get; set; }
}
На мой взгляд, я просто проповедую над моделью. Это дает желаемые результаты. Тем не менее, один из классов, который был сгенерирован для меня EF, это Category. Сначала я пытался использовать его для построения строго типизированной модели и передать ее в представление, например, так:
public ActionResult Test()
{
using (MyEntities db = new MyEntities())
{
var model = from c in db.Categories
select new Category { CategoryID = c.CategoryID, Name = c.Name };
return View(model.ToList());
}
}
Это выдало мне следующую ошибку:
"Сущность или сложный тип 'MyProjectModel.Category' не могут быть созданы в запросе LINQ to Entities."
Итак, мой вопрос: в чем разница между CategoryViewModel и Category, отличными от Category, создаваемой для меня? Что мешает мне использовать Category в качестве типа моей модели в этом сценарии? Я просматривал другие вопросы (и ответы) о SO сегодня, но я не смог найти то, что обсуждает это. Я также видел несколько других новых терминов, упомянутых в этих постах (классы собеседников, autoppers, POCO), но, кажется, преждевременно изучать их, не понимая основы моей проблемы.
Я бы очень признателен за понимание.