EF通用存储库到任何数据提供者

时间:2013-03-13 09:12:51

标签: c# orm repository-pattern n-tier-architecture

我正在尝试使我的EF通用存储库更“宽”,以便与任何数据提供程序(ORM)(如EF,NHibernate,Amazon Services等)一起使用,而不会绑定到EF上下文

现在我有(主旨链接):

我已经重写了IRepositoryRepository的一部分。

但不知道怎么处理EF以及如何最终摆脱它。

您能否给我一些文章或代码示例,以便在我的工作中找到正确的方向。

1 个答案:

答案 0 :(得分:1)

IRepository id的想法是为存储库中的每个ORM 做出不同的实现。这样您就不必根据ORM本身构建解决方案。

然后,当你试图让你的存储库处理许多ORM时,我认为你做错了

更新

您应该根据IRepository构建BLL,而不了解实现,然后您可以使用构造函数注入或依赖性解析器将合适的实现传递给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)
   {
      //........
   }
}

然后在BLL中依赖于ProductRepository上的IProductRepository:

public class ProductService
{
   private readonly IProductRepository repository
   public ProductService(IProductRepository repository){
      this.repository = repository
   }
// ........ the code of your BLL
}