我将如何设计一个存储库来处理多个数据访问策略?(How would I design a repos

2019-07-29 15:12发布

会是什么骨架的设计外观像能够在存储库,以支持使用ASP.NET MVC和C#多个数据库层? 我希望看到一个设计会是什么样子,如果我支持LINQ to SQL和NHibernate的。 我将如何创建我的数据库对象,并调用它的方法在我的BLL层?

Answer 1:

该库模式可能是我们的最佳解决方案。 你会定义一个接口每个仓库,然后创建LINQ2SQL和NHibernate实现,如混凝土库

public interface ICustomerRepository
{
    Customer GetCustomer(int id);
}

public class NhibCustomerRepository : ICustomerRepository
{
    public Customer GetCustomer(int id)
    {
        // NHibernate implementation
    }
}

public class LtsCustomerRepository : ICustomerRepository
{
    public Customer GetCustomer(int id)
    {
        // Linq2Sql implementation
    }
}

甲依赖注入框架,如Ninject ,可以很容易地实现之间动态切换。 您可能需要做一些额外的依赖注入与NHibernate到当前的ISession传递到你的资料库,让他们参与到同一个单位的工作。



Answer 2:

我媒体链接回应称,两次的xD

一个在这里

使用LINQ Reposity模式

另外这里

的ControllerFactory具有在一个不同的项目分开的控制器



文章来源: How would I design a repository to handle multiple data access strategies?