我什么时候应该使用Odbc,OleDb,SQLClient?有什么权衡取舍

Raj*_*Rao 8 .net database oledb odbc sqlclient

我开始使用SQLServer数据库.所以我似乎应该使用System.Data.SqlClient命名空间.但是,我们有可能关闭我们的SqlServer数据库并转到MySql或Oracle.出于这个原因,我提出了一套关于我们的.Net应用程序如何与数据库通信的标准,以便在将来我们需要时更容易迁移到不同的数据库系统.

所以这是标准:

  1. 如果可能的话使用ORM(例如NHibernate)(没有LINQ,因为它只支持SqlServer,但是实体框架及其对Oracle和MySql的支持呢?)
  2. 如果ORM是过度杀死,则使用参数化SQL查询.
  3. 仅将存储过程用于需要在数据库上执行的长时间运行或复杂操作.

这让我想到了我的主要问题. 我应该使用哪个命名空间来编写DAL代码?

在我看来,选择是在System.Data.ODBC和之间System.Data.OleDB:

  • 有什么权衡取舍?
  • 一个比另一个更受欢迎吗?
  • 您对前3个标准有何看法?

小智 3

系统.数据.SQLClient

仅连接到 SQL Server 2000 及更高版本,但在连接到这些数据库时您将获得最佳性能。

系统.Data.OledbClient

连接到 SQL 6.5

OLEDBClient 使您能够连接到其他数据库,例如 ORACLE 或 Access。但是对于使用 SQL Server,您将使用 SQLClient 获得更好的性能。

注意:为了连接ORACLE,微软也有ORACLEClient。

系统.数据.ODBCClient

使用 ODBC 驱动程序仅连接到旧数据库。(例如 MS Access 97。)

原始来源