数据访问层设计模式

Dav*_*art 13 .net database oop design-patterns

我必须设计一个带.NET的数据访问层,它可能会使用多个具有相同关系设计的数据库管理系统(Mysql和Sql Server).

基本上,从一个数据库切换到另一个数据库必须简单,所以我希望你向我推荐一些对你有用的网站或书籍,通常的设计模式或信息来实现这种数据访问层.

谢谢.

Joh*_*lan 12

我推荐Martin Fowler的企业应用程序架构模式.

他的网站上也有一系列模式

DataMapper的模式也与此相关.


arb*_*ter 8

我喜欢使用基于接口的Db访问.Ado.net的每个数据库提供程序都实现了基本接口,当您使用它们时,您的代码可能如下所示:

public static IDbConnection GetConnection(string connectionName)
{
  ConnectionStringSettings ConnectString = ConfigurationManager.ConnectionStrings[connectionName];
  DbProviderFactory Factory = DbProviderFactories.GetFactory(ConnectString.ProviderName);
  IDbConnection Connection = Factory.CreateConnection();
  Connection.ConnectionString = ConnectString.ConnectionString;
  return Connection;
}
Run Code Online (Sandbox Code Playgroud)

然后,当您需要与db通信时:

public static DataTable Dummy()
{
  using (IDbConnection Connection = GetConnection("SiteSqlServer"))
  {
    IDbCommand Command = Connection.CreateCommand();
    Command.CommandText = "DummyCommand";
    Command.CommandType = CommandType.StoredProcedure;

    Connection.Open();

    using (IDataReader reader = Command.ExecuteReader())
    {
      DataTable Result = new DataTable();
      Result.Load(reader);
      return Result;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

使用此技术,您可以创建完全独立于数据库的DAL.当然,对于某些复杂情况,这还不够.但大多数情况下这将完成工作,并且您不需要各种外部库.