Шаблон Object Query с использованием EF 4 и шаблона репозитория - PullRequest
0 голосов
/ 30 мая 2011

Вопрос относительно шаблона хранилища и шаблона объекта запроса.Я использую EF 4 и сгенерировал мои классы POCO из моей модели базы данных с помощью ADO.NET POCO Entity Generator в VS 2010. Файл edmx и файл tt (классы POCO) находятся в 2 разных проектах.

Мои репозитории относятся к конкретному домену, например, DocumentRepository и UserRepository.Моя модель базы данных отличается от моей доменной модели в такой степени, что я реализовал мапперы для преобразования объекта домена в одну или несколько таблиц базы данных (и наоборот).Одним из примеров является то, что мой класс домена Document моделируется как 3 таблицы (и, следовательно, классы POCO) в базе данных.

Как бы вы реализовали шаблон объекта запроса при использовании объектов домена в таком случае?Как я вижу, мне нужно написать объект запроса на основе классов POCO, а не классов домена?Но не нарушит ли это модель хранилища?

1 Ответ

3 голосов
/ 30 мая 2011

ORM обычно используется таким образом, что он работает напрямую с объектами домена = он загружает их из базы данных и сохраняет их в базе данных. Вы делаете еще один шаг абстракции, где вы используете объекты ORM только для заполнения ваших пользовательских объектов. Ваши пользовательские объекты полностью выходят за рамки вашего инструмента ORM, и вы не можете ожидать, что инструмент ORM предоставит вам какую-либо поддержку запросов, построенных поверх ваших доменных объектов. Вы должны создать свою собственную поддержку запросов и переводить запросы домена в запросы ORM внутри своих репозиториев. Обычно это делается путем реализации шаблона спецификации.

Btw. в таком сценарии POCO не имеет особого смысла - POCO предназначены для сценариев, в которых вы хотите использовать их в качестве объектов домена).

...