设计模式通过数据访问层处理多个数据库?

时间:2014-05-29 07:59:54

标签: design-patterns data-access-layer c#-5.0

我一直在研究"四个设计模式的帮派的设计模式"。

我需要设计数据层来处理多个数据库,并在需要时扩展功能。数据库可以是SQL,一个XMl或一些外部系统数据库。

要遵循什么样的好设计模式?

修改 基于建议,我尝试在数据层中实现DAO和Factory模式。在某种程度上,我可以达到目的。 但是根据GOF设计模式,数据提供者名称决定了我可以调用哪个数据库对象。 如下。我在哪里尝试使图层动态,以便可以处理多个数据库。如果我遵循以下模式,那么我只能在一个应用程序中访问一个数据库。

如果有人看过Gang of Four Design模式,那么请指导我。

public class DaoFactories
{
    public static IDaoFactory GetFactory(string dataProvider)
    {
        // Return the requested DaoFactory
        switch (dataProvider)
        {
            case "ADO.NET.Access": return new AdoNet.Access.AccessDaoFactory();
            case "ADO.NET.Oracle": return new AdoNet.Oracle.OracleDaoFactory();

            case "ADO.NET.SqlExpress":
            case "ADO.NET.SqlServer": return new AdoNet.SqlServer.SqlServerDaoFactory();

            case "LinqToSql.SqlExpress": 
            case "LinqToSql.SqlServer": return new LinqToSql.Implementation.LinqDaoFactory();

            case "EntityFramework.SqlExpress": 
            case "EntityFramework.SqlServer": return new EntityFramework.Implementation.EntityDaoFactory();

            // Default: SqlExpress
            default: return new AdoNet.SqlServer.SqlServerDaoFactory(); 
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您应该查看Repository PatternData Access Object Pattern

  

存储库模式:在许多应用程序中,业务逻辑从数据存储(如数据库,SharePoint列表或Web服务)访问数据。直接访问数据可能会导致以下结果:   重复的代码   编程错误的可能性更高   业务数据类型不佳   难以集中数据相关的策略,如缓存   无法轻松地与外部依赖关系单独测试业务逻辑

     

数据访问对象:在计算机软件中,数据访问对象(DAO)是为某种类型的数据库或其他持久性机制提供抽象接口的对象。通过将应用程序调用映射到持久层,DAO提供了一些特定的数据操作,而不会暴露数据库的细节。

答案 1 :(得分:1)

存储库是要走的路。当我不得不使用Oracle和SQL数据库时,我已多次使用它。这可能对您有用:http://www.primaryobjects.com/CMS/Article108.aspx