通用DAL架构

本文关键字:架构 DAL 通用 | 更新日期: 2023-09-27 17:57:47

我们目前有客户端将数据存储在多个数据源(MS SQL、Oracle、MS Access、Web Services等)中

我们已经创建了一个框架来处理MS SQL、Oracle、Access的大多数场景,但有些客户不愿意提供直接的数据库访问,因此只提供Web服务。

我无法想出一个通用的解决方案来处理手头的5%问题,从而为作为数据源的Web服务和其他服务创建一些东西。

有人能帮我处理这种情况吗。

-Naga

通用DAL架构

将您的Web服务数据源视为与MS SQL或Oracle数据源没有什么不同。它只是一个额外的具体数据存储。遵循这样的模式:

public interface IRepository
{
 List<EmployeeModel> GetEmployees();
}

这里EmployeeModel是一个简单的C#类,与Oracle、MSSQL或您的web服务无关。

public class SqlRepository : IRepository
{
  public List<EmployeeModel> GetEmployees()
  {
   // get it from SQL using ADO.NET or Linq2Sql
   // transform into EmployeeModel using Automapper/manual and return.
  }
}
public class WebServiceRepository : IRepository
{
  private readonly ProxyClient _proxy; // or helper
  public List<EmployeeModel> GetEmployees()
  {
   // get it from the ASMX using Proxy Helpers with return type as data contracts.
   // transform the data contracts into EmployeeModel using Automapper/manual and return.
  }
}

我认为其中一个选项是使用存储库模式。请看下面的Repository模式示例:http://www.remondo.net/repository-pattern-example-csharp/

我希望这能有所帮助。