通用DAL架构
本文关键字:架构 DAL 通用 | 更新日期: 2023-09-27 17:57:47
我们目前有客户端将数据存储在多个数据源(MS SQL、Oracle、MS Access、Web Services等)中
我们已经创建了一个框架来处理MS SQL、Oracle、Access的大多数场景,但有些客户不愿意提供直接的数据库访问,因此只提供Web服务。
我无法想出一个通用的解决方案来处理手头的5%问题,从而为作为数据源的Web服务和其他服务创建一些东西。
有人能帮我处理这种情况吗。
-Naga
将您的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/
我希望这能有所帮助。