Лучшие практики для разделения уровней проекта с использованием ASP.NET MVC3 и Entity Framework - PullRequest
0 голосов
/ 03 декабря 2011

У меня есть решение, содержащее веб-приложение MVC3 и проект данных с файлом Entity Framework. У меня работает Entity Framework, но когда я пытаюсь включить объект Entity Framework Entity Item в одну из моих моделей представления, чтобы перейти к представлению, я получаю следующую ошибку

Тип 'System.Data.Objects.DataClasses.EntityObject' определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку «System.Data.Entity, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089».

Я пытался добавить ссылку на эту сборку, а затем включить ее с помощью оператора using в проект, но, похоже, он ничего не делает. Но возникновение этой проблемы также порождает вопрос: не стоит ли вообще пытаться использовать элементы сущностей Entity Framework в ваших моделях представлений? В соответствии с лучшими практиками использования ASP.NET MVC3 и Entity Framework, каковы лучшие практические правила, определяющие, что должно происходить на вашем уровне представления, на вашем бизнес-уровне и на уровне данных и как они разделены?

Я знаю, что это запутанный вопрос ...

Спасибо за помощь.

Ответы [ 2 ]

6 голосов
/ 03 декабря 2011

Хорошо. Это мое мнение о вещах ...

Прежде всего, ваш ViewModels НИКОГДА не должен содержать в себе сложных типов. Сложный, состоящий из Entity Framework вещей и т. Д. Они всегда должны быть простыми и чистыми и светлыми . Представление не должно иметь никаких знаний о постоянстве или базе данных или еще много чего. Все, что нужно знать представлению, это то, какие данные оно должно отображать. Просто.

То есть ViewModels должно быть POCO -> strings, ints, базовые custom objects и strongly typed collections.

В вашем контроллере вы должны преобразовывать любые сложные типы для просмотра моделей. Я рекомендую использовать AutoMapper для этого.

Вот пример учебного сайта Я сделал, который показывает вам, как Контроллер передает информацию в ViewModel .. и ViewModel действительно проста .

0 голосов
/ 03 декабря 2011

Вы получаете эту ошибку, потому что ваши доменные объекты наследуются от EntityObject, поэтому они не игнорируют постоянство.Вам нужно сначала использовать шаблон генерации POCO или код EF, если вы хотите, чтобы они не зависели от библиотеки платформы Entity.

И лично я считаю, что работать с объектами вашего домена в вашей "презентации просто замечательно«Слой, если вы не создаете что-то огромное и сверхобслуживаемое, полностью разделяя модель домена с помощью Automapper или около того, - это всего лишь переобучение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...