Не волнуйтесь!
Entity Framework - большой зверь фреймворка, основанный на другом зверьке фреймворка: ADO.NET. Очень сложно понять Entity Framework, кроме понимания ADO.NET.
При этом Entity Framework является идеальным инструментом в некоторых сценариях. Тем не менее, вы (как и многие из нас), похоже, не понимаете роли EF, ASP.NET MVC и репозитория.
Дело в том, что вам не нужен репозиторий. Вам даже не нужна модель представления. Вам не нужен EF. И вам даже не нужен ASP.NET MVC. Все эти инструменты используются для облегчения конкретных заданий. Ни один из них не имеет прямых связей друг с другом, и любой из них может использоваться независимо друг от друга.
Репозиторий : используется для размещения определенных объектов в некотором постоянном месте, чтобы вы могли получить их позже. Это действительно все.
ASP.NET MVC : обработчик HTTP, который берет запрошенный URL-адрес и создает экземпляр класса controller , который, в свою очередь, обслуживает просмотров . Представления отображают некоторые модели , и поскольку представления являются интерактивными, они позволяют пользователю отправлять еще один запрос , начиная все заново. Поскольку этот процесс (преднамеренно, но не обязательно) не имеет состояния, требуется какой-то постоянство . Это постоянство может быть файлом на сервере, файловой базой данных или в большинстве случаев реляционной базой данных.
Entity Framework : располагается поверх ADO.NET (среда абстракции реляционной базы данных Microsoft) и позволяет отображать объектов из графической (в памяти) формы в реляционную (в базе данных) и обратно. Идея заключается в том, чтобы позволить разработчику легко отображать объекты в базу данных и из нее. Однако это не простой процесс, и поскольку вы не взаимодействуете напрямую с базой данных (будь то через ADO.NET или нет), есть некоторая внутренняя сложность. Одной из таких сложностей является отображение информации.
Просмотр моделей (просмотр моделей asp.net mvc): позволяет отображать модели в различных формах. Например, у нас может быть таблица «схоластической записи» и таблица «человека», и вместе они могут образовывать «студента». Поскольку нашими объектами являются «ScholasticRecord» и «Person», мы не можем (как) просто отображать информацию в представлении. По этой причине мы создаем модель представления для объединения и отображения информации как «Студент».
View Models также предотвращает случайный вызов «ленивых» методов для наших сущностей во время просмотра, которые могут запрашивать базу данных. Это не плохо , но это может сбить с толку, потому что наш view выполняет работу с репозиторием (что не очень [S] OLID) .
TLDR;
Причина, по которой у вас возникли проблемы, , вероятно, , потому что вы пытаетесь сделать все сразу. Я бы предложил использовать инструменты, которые вы знаете, в дополнение к одному или двум, которые вы не знаете. Попробуйте использовать Entity Framework и ASP.NET MVC вместе, но пока не беспокойтесь о шаблоне репозитория. Может быть трудно использовать EF с репозиторием, если у вас нет большого опыта работы с одним или обоими.
Обучающие программы ASP.NET MVC с Entity Framework:
http://www.asp.net/mvc/tutorials/mvc-music-store
(обратите внимание, что иногда они используют модели непосредственно в представлении)