具有多个后端和不同数据库设计的数据访问层

Bra*_*vie 5 c# data-access-layer backend

我正在开始一个项目,并且正在为数据访问层的架构而苦苦挣扎.基本上,它需要与具有不同数据库设计的多个后端进行交互.

我想要一个通用的DAL,然后在任何后端执行一个共同的功能.后端具有用于插入,更新等的唯一代码.因此,在1个后端添加Employee将在另一个后端具有不同的代码.

我尝试了Repository模式,但这并不适用于这种情况.我最终只得到了一个Factory模式方法,但最终我会为每个对象创建一个Factory.我可能只能创建1个工厂,但Backend对象将拥有数百个函数,如"SaveEmployee","SavePlan"等.

现在我有以下内容:

DAL
    --> DAL.Backend1
        --> Employee.Save(employee)
        --> Plan.Save(plan)
    --> DAL.Backend2
        --> Employee.Save(employee)
        --> Plan.Save(plan)
Run Code Online (Sandbox Code Playgroud)

在DAL项目中,我为每个Object,Employee,Plan提供了Factory模式,以决定返回和执行哪个DAL的Object.

我很确定这不是最好的架构,所以我想知道是否有更好的模式来解决我的问题.

小智 0

我们已经在我们的一个项目中实现了此功能。我不确定这是最好的解决方案,但到目前为止它对我们有用。但是,我们有一个基于 CodeSmith 模板的自定义 DAO 层,可以为我们生成 CRUD 类。本质上,我们创建了一个单例,它代表所有用户的连接代理。当用户登录时,他们选择想要连接的数据库(尽管某些 IP 过滤会缩小他们的选项范围,最好是 1)。登录存储与关联用户的连接令牌,生成的 DAO 层的基类调用连接代理来检索适当的连接字符串。这样,只要调用 DAO 对象,就会在 DAO 对象尝试连接到数据库之前收集连接字符串。