为什么不使用DbConnection而不是SqlConnection或OracleConnection?

O. *_*nes 12 c# mysql database sql-server oracle

我是一个Java翻新的C#新手.我希望在未来几周内制作一堆DML代码时不会遇到麻烦.

我习惯于使用JDBC的抽象类,如Connection,Statement等.C#在System.Data.Common命名空间中提供类似的抽象类,如DbConnection,DbCommand等.

但是,我见过的大部分例子 - 无论是在MS文档还是其他书籍中 - 都使用了具体的类:SqlConnection,OracleCommand等.这种具体性甚至出现在mySQL文档中.

这方面的最佳做法是什么?是否有一些强有力的理由为此目的选择具体的表 - 服务器特定而不是抽象类?(当然,我知道将抽象向抽象混凝土的危害).

Guf*_*ffa 13

抽象类不是框架的第一个版本的一部分,它们是在2.0版本中引入的.在此之前编写了很多示例,或者基于之前编写的示例.

使用具体或抽象类主要是品味问题.编写可以与任何数据库一起使用的代码是一个不错的主意,但我的经验是你不经常切换数据库系统,如果你这样做,你需要做很多改变,这并不重要如果您使用抽象类或不使用.


Phi*_*ert 8

大多数特定于数据库的ADO.NET类都具有额外的重载和/或特定于该数据库驱动程序的方法和属性.

使用SqlConnection和OracleConnection等具体类可以更轻松地访问特定于驱动程序的功能.