Я боролся с этим какое-то время. Если вы делаете архитектуру, подобную этой..
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 для этого... и я снова застрял.
Любые идеи или предложения или способ сделать что-то?
Спасибо.
IRepository<T>
, которая требует какого-либо контекста... - person Mark Seemann   schedule 16.09.2011