Идея идентификатора IRepository для создания различных реализаций для каждого ORM в репозитории. Таким образом, вам не нужно создавать свое решение в зависимости от самого ORM.
Тогда я думаю, что вы делаете это неправильно, когда вы пытаетесь сделать свой репозиторий, чтобы иметь дело со многими ORM-х
Update:
Вы должны построить свой BLL в зависимости от IRepository, ничего не зная о реализации, то вы можете использовать Constructor Injection или Dependency Resolver для передачи подходящей реализации BLL.
E.G.
public interface IProductRepository{
void AddProduct(Product model);
void UpdateProduct(Product model);
}
реализация EF:
public class ProductRpository : IProductRepository
{
void AddProduct(Product model)
{
//Add any code you want maybe EF code.
}
void UpdateProduct(Product model)
{
//........
}
}
Тогда в УСК вы зависите от IProductRepository ОНТ на ProductRepository:
public class ProductService
{
private readonly IProductRepository repository
public ProductService(IProductRepository repository){
this.repository = repository
}
// ........ the code of your BLL
}
Так что мне нужно EfRepository, NhRepository и так далее? Как я буду называть это в моем BLL, если мне понадобится ef и nhibernate одновременно? Теперь я просто использую https://gist.github.com/maksii/5150547 –
@MaksMartynov Посмотрите на мое обновление :) –