Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Entity Framework и модели


Автор: lexnext1 1.12.2012, 16:51
Доброго времени суток, уважаемые форумчане.
 Пишу сейчас приложение на ASP.NET, но вопрос не касается конкретно этой технологии, он больше относится к архитектуре приложения в целом.
 Так вот.
 Для взаимодействия с базой данных использую Entity Framework: чтение, запись и т.д. Все эти операции у меня происходят в сервисном слое, который вызывается из экшенов контроллера.
Т.е. в основном суть Контролера - это получить данные отдать в сервисный слой, получить результат и вернуть в представление. 
 И вот тут вот вопрос: что из себя этот результат должен представлять, если, к примеру, мне нужно отобразить пять записей содержимого одной таблицы? Что я должен передавать в представление?
Коллекцию объектов класса унаследованного от EntityObject, структура которого описывается в edmx файле? 
Либо мне имеет смысл создать простенькую модель содержащую в себе только свойства (поля таблицы) и коллекцию ее объектов передавать в представление, заведомо заполнив результатом  - ну это очень трудоемко, если таблиц много.

 Надеюсь не запутал. Поделитесь, пожалуйста, опытом. 
Заранее спасибо.

Автор: Экскалупатор 2.12.2012, 13:17
все как всегда зависит от деталей. если это проект маленький и поддерживать его в будущем не планируется то можно не загоняться. если же это что то более менее долгосрочное, то лучше разделить все на отдельные слои и не смешивать их между собой. использовать в контроллерах обращение к слою данных приведет к тому что у тебя будет этот самый код выборки из базы размазан по всему проекту, и в перспективе можно огрести много проблем и "непонятных" багов. я бы наверное работал со своими данными, отвязав тем самым все приложение от модели базы. ну и плюс собрал весь код сохранения и выборки данных в одном месте.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)