Шаблон репозитория MVC + - все еще зависит от модели данных? - PullRequest
3 голосов
/ 27 апреля 2010

Я начал проект для школы, в котором я использую ASP.NET MVC 2 + LINQ2SQL и бизнес-уровень, поэтому мой пользовательский интерфейс не взаимодействует с БД напрямую. У меня вопрос такой:

В моем проекте MVC при отображении представлений и передаче данных мне все равно приходится включать проект данных для доступа к классам в моем проекте Linq2Sql. Это правильно?

Пример:

Контроллер:

ClassesRepository cr = new ClassesRepository(); // this is from my Business project
Class classToEdit = cr.GetByClassId(id); // "Class" is from my data project

Мне все еще приходится ссылаться на класс в моем проекте данных linq2sql - разве мой интерфейс не должен быть полностью независимым от уровня данных? Или, может быть, я все об этом ошибаюсь.

Ответы [ 2 ]

3 голосов
/ 27 апреля 2010

Я предпочитаю, чтобы мой репозиторий выполнял внутреннее сопоставление с моими собственными классами. Так что я возвращаю из своего репозитория не классы LinqToSql, а мои собственные. Затем я отображаю возвращенные данные классов в модель для каждого представления.

Так это выглядит так:

Класс LinqToSQL -> MyClass (вывод из репозитория на данный момент) -> (контроллер сопоставляется с моделью для конкретного представления) MyModel.

Обязательно всегда делайте модель для каждого вида. Вы можете просто использовать то, что возвращает ваш репозиторий, но это кратчайший путь, и сопоставление его с их собственными моделями представления окупится в будущем.

1 голос
/ 18 мая 2010

Посмотрите на серию Golf Tracker в MVC Central, она делает то, что вы хотите, и то, что описывает Келси.

http://www.mvccentral.net

...