Существует много споров о том, какой метод является правильным, поэтому я рассматриваю его как приемлемый, поэтому я использую все, что мне больше всего нравится (в котором нет репозитория, UoW).
В EF UoW реализуется через DbContext, а DbSets - это хранилища.
Что касается того, как работать с уровнем данных, я просто непосредственно работаю над объектом DbContext, для сложных запросов я буду применять методы расширения для запроса, который можно использовать повторно.
Я считаю, что у Ayende также есть некоторые сообщения о том, как абстрагироваться от CUD-операций.
Я всегда создаю интерфейс и наследую свой контекст, поэтому я могу использовать контейнер IoC для Д.И..