我正在尝试使我的EF
通用存储库更“宽”,以便与任何数据提供程序(ORM)(如EF,NHibernate,Amazon Services等)一起使用,而不会绑定到EF
上下文
现在我有(主旨链接):
我已经重写了IRepository和Repository的一部分。
但不知道怎么处理EF
以及如何最终摆脱它。
您能否给我一些文章或代码示例,以便在我的工作中找到正确的方向。
答案 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
}