Сначала скажем, что Entity Framework реализует шаблон репозитория и шаблон единицы работы.Реализация шаблонов Repository и Unit of Work поверх современной ORM-подобной Entity Framework является дополнительным уровнем абстракции, который:
- сужает возможности базового ORM
- и не предоставляет дополнительныхзначение для лежащего в основе ORM
- в лучшем случае бесполезно, но может быть вредным
Одна из целей таких реализаций состоит в том, чтобы инкапсулировать логику запроса в репозитории, а не один запрос, такой как принцип единой ответственности( SRP ) предложил бы, но пару запросов и тем самым нарушить SRP.Что вы могли бы сделать, так это полагаться на свою ORM и инкапсулировать обширную логику запросов в отдельных классах запросов.
Мое предложение состоит не в том, чтобы угодить «лучшим практикам», добавляя уровни абстракции на уровнях абстракции и т. Д., А в том, чтобы попытатьсярешить проблему, используя некоторые более общие рекомендации по проектированию, такие как SOLID .
Айенде Рахен рассматривает приложение Starter Kit Northwind Starter в серии постов в блоге ( здесь , здесь , здесь , здесь , здесь , здесь , здесь и здесь) в его блоге , посвященном так называемым лучшим практикам, применяемым в приложении.Это отличное чтение!