C# 通用DAL建筑技术
目前,我们的客户机在多个数据源(MS SQL、Oracle、MS Access、Web服务等)中存储数据 我们已经创建了一个框架来处理MS SQL、Oracle和Access的大多数场景,但是一些客户端不愿意提供直接的DB访问,因此只提供Web服务 我无法想出一个通用的解决方案来处理手头5%的问题,以便为Web服务以及其他服务创建数据源 有人能帮我处理这种情况吗C# 通用DAL建筑技术,c#,.net,architecture,data-access-layer,C#,.net,Architecture,Data Access Layer,目前,我们的客户机在多个数据源(MS SQL、Oracle、MS Access、Web服务等)中存储数据 我们已经创建了一个框架来处理MS SQL、Oracle和Access的大多数场景,但是一些客户端不愿意提供直接的DB访问,因此只提供Web服务 我无法想出一个通用的解决方案来处理手头5%的问题,以便为Web服务以及其他服务创建数据源 有人能帮我处理这种情况吗 -Naga我认为其中一个选择是使用存储库模式。请看下面的存储库模式示例: 我希望这会有所帮助。我认为其中一个选择是使用存储库模式。请看
-Naga我认为其中一个选择是使用存储库模式。请看下面的存储库模式示例:
我希望这会有所帮助。我认为其中一个选择是使用存储库模式。请看下面的存储库模式示例:
我希望这会有所帮助。我认为其中一个选择是使用存储库模式。请看下面的存储库模式示例:
我希望这会有所帮助。我认为其中一个选择是使用存储库模式。请看下面的存储库模式示例:
我希望这会有所帮助。将您的Web服务数据源视为与MS SQL或Oracle数据源相同的数据源。它只是一个额外的具体数据存储。遵循这样的模式:
public interface IRepository
{
List<EmployeeModel> GetEmployees();
}
公共接口IRepository
{
列出GetEmployees();
}
在这里,EmployeeModel是一个简单的C#类,与Oracle、MS SQL或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.
}
}
公共类SqlRepository:IRepository
{
公开名单
{
//使用ADO.NET或Linq2Sql从SQL获取它
//使用Automapper/manual转换为EmployeeModel并返回。
}
}
公共类webservicepository:IRepository
{
私有只读代理客户端_proxy;//或帮助程序
公开名单
{
//使用返回类型为数据协定的代理帮助程序从ASMX获取它。
//使用Automapper/manual和return将数据合同转换为EmployeeModel。
}
}
将Web服务数据源视为与MS SQL或Oracle数据源相同的数据源。它只是一个额外的具体数据存储。遵循这样的模式:
public interface IRepository
{
List<EmployeeModel> GetEmployees();
}
公共接口IRepository
{
列出GetEmployees();
}
在这里,EmployeeModel是一个简单的C#类,与Oracle、MS SQL或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.
}
}
公共类SqlRepository:IRepository
{
公开名单
{
//使用ADO.NET或Linq2Sql从SQL获取它
//使用Automapper/manual转换为EmployeeModel并返回。
}
}
公共类webservicepository:IRepository
{
私有只读代理客户端_proxy;//或帮助程序
公开名单
{
//使用返回类型为数据协定的代理帮助程序从ASMX获取它。
//使用Automapper/manual和return将数据合同转换为EmployeeModel。
}
}
将Web服务数据源视为与MS SQL或Oracle数据源相同的数据源。它只是一个额外的具体数据存储。遵循这样的模式:
public interface IRepository
{
List<EmployeeModel> GetEmployees();
}
公共接口IRepository
{
列出GetEmployees();
}
在这里,EmployeeModel是一个简单的C#类,与Oracle、MS SQL或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.
}
}
公共类SqlRepository:IRepository
{
公开名单
{
//使用ADO.NET或Linq2Sql从SQL获取它
//使用Automapper/manual转换为EmployeeModel并返回。
}
}
公共类webservicepository:IRepository
{
私有只读代理客户端_proxy;//或帮助程序
公开名单
{
//使用返回类型为数据协定的代理帮助程序从ASMX获取它。
//使用Automapper/manual和return将数据合同转换为EmployeeModel。
}
}
将Web服务数据源视为与MS SQL或Oracle数据源相同的数据源。它只是一个额外的具体数据存储。遵循这样的模式:
public interface IRepository
{
List<EmployeeModel> GetEmployees();
}
公共接口IRepository
{
列出GetEmployees();
}
在这里,EmployeeModel是一个简单的C#类,与Oracle、MS SQL或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.
}
}
公共类SqlRepository:IRepository
{
公开名单
{
//使用ADO.NET或Linq2Sql从SQL获取它
//使用Automapper/manual转换为EmployeeModel并返回。
}
}
公共类webservicepository:IRepository
{
私有只读代理客户端_proxy;//或帮助程序
公开名单
{
//使用返回类型为数据协定的代理帮助程序从ASMX获取它。
//使用Automapper/manual和return将数据合同转换为EmployeeModel。
}
}
您所说的
通用解决方案
是什么意思?最好的方法是提供对上层DAL的直接访问(通过WCF/Web服务),这将访问下层DAL(DB)。感谢您的快速响应。我会尽量多给你一些我要找的东西。如果我有6个客户端,它们中的每一个都使用不同的方式来存储数据,即MSSQL、Oracle、Web服务等。我们可以编写一个通用DAL层来覆盖SqlClinet、OleDb、ODBC,但缺点是当我们遇到Web服务时。我们如何为web服务创建DAL。点击用于web服务的DAl并获取要在UI中显示的数据。您所说的通用解决方案是什么意思?最好的方法是提供对上层DAL的直接访问(通过WCF/Web服务),这将访问下层DAL(DB)。感谢您的快速响应。我会尽量多给你一些我要找的东西。如果我有6个客户端,它们中的每一个都使用不同的方式来存储数据,即MSSQL、Oracle、Web服务等。我们可以编写一个通用DAL层来覆盖SqlClinet、OleDb、ODBC,但缺点是当我们遇到Web服务时。我们如何为web服务创建DAL。点击用于web服务的DAl并获取要在UI中显示的数据。您所说的通用解决方案是什么意思?最好的方法是提供对上层DAL的直接访问(通过WCF/Web服务),它将