Я боролся с этим уже какое-то время. Если вы делаете архитектуру, как это ..
Project.Domain
- Entities
- Repositories interfaces Project.Persistence.EF
- Repositories
- ContextProvider
- etc..
Project.Persistence.SQL
???
Project.Tasks
...
Project.Presentation
...
С IoC вы можете почти изменить любые компоненты для других компонентов. Важным интерфейсом, который здесь связан с вопросом, является IRepository (Generic), расположенный в домене. Это только определение, а не реализация.
Основная проблема, на которую я смотрел, это Как я могу переключить EF для SQL почти мгновенно?
Если вы посмотрите на интерфейс репозитория ... он явно предназначен для работы с контекстом.
public interface IRepository<T> where T : class
{
void Add(T entity);
void Delete(T entity);
T GetById(long Id);
}
Как я могу затем заставить этот репозиторий работать также с реализацией SQL, чтобы я мог использовать IoC для выбора между EF и SQL?
Конечно, я мог бы создать IRepositorySQL и IRepositoryEF, но тогда я не смог бы использовать IoC для этого ... и я снова застрял.
Любые идеи или предложения или способ сделать вещи?
Спасибо.