Многие современные .NET ORM предоставляют реализацию IQueryProvider (включая NHibernate).Я решил удалить прямую зависимость от EF, используя шаблон POCO T4, а затем изменив его для создания интерфейса (IMyRepository), который возвращает простые IQueryables вместо ObjectSets.Базовая реализация IMyRepository с использованием ObjectContext.Если мы решим отойти от EntityFramework, мы можем просто изменить реализацию IMyRepository, чтобы использовать чужой LINQ IQueryProvider.
Кроме того, это позволяет нам работать в распределенном сценарии.Например, одна реализация IMyRepository живет на клиенте и использует DataServiceClient (WCF Data Services) для обращения к серверу, который имеет другую реализацию IMyRepository, которая напрямую использует Entity Framework.
В случаеКод Во-первых, это также довольно легко сделать.Ваши классы уже являются POCO ... поэтому просто заставьте ваш DbContext реализовать интерфейс, который возвращает IQueryables вместо DbSets.
Лично я затем внедряю IMyRepository с помощью внедрения зависимостей.