Не уверен, что является проблемой в жестком кодировании ProductEntities
здесь - ProductRepository
в любом случае кажется, что это реализация для конкретного продукта.
Если вы хотите внедрить ProductEntities
в свой репозиторий без учета зависимостей, вы можете создать интерфейс маркера, такой как IProductEntities
, и реализовать его в ProductEntities
public interface IProductEntities { }
public partial class ProductEntities : IProductEntities { }
Помните, что хотя ProductEntities
является сгенерированным классом, вы все равно можете добавить к нему код, потому что он является частичным (в качестве примечания, если он не был частичным, тогда вы могли бы просто унаследовать его)
Возможно, вы можетехотите добавить некоторые методы в интерфейс IProductEntities
, если вы действительно думаете о переключаемых контекстах данных.Хотя я сомневаюсь, что будет необходимость менять контекст, и я не уверен, кто будет предоставлять альтернативную реализацию.
Так как такой шаблон репозитория в любом случае абстрагирует доступ к данным, поэтому не стоит видеть никакого смысла в абстрагировании контекста EF таким образом.Завтра, если вы захотите использовать другую оболочку OR (например, NHibernate), вы, вероятно, можете предоставить другую реализацию IProductRepository
, которая использует другой сопоставитель OR.