我开始Sql server database.因此,看起来我应该使用 System.Data.SqlClient 名字空间。但是,有一个机会,我们可能关闭我们的Sql server database去MySql或Oracle。由于这个原因,我来了一个设定的标准如何我们。净的应用程序与数据库,以便使它更容易迁移到一个不同的数据库系统的未来如果我们需要这样做。

因此,这里的标准:

  1. 使用一个奥姆如果可能的(例如: 它能够)(没有皇宫,因为它只 支持Sql server,但是什么有关 实体框架及其支持 Oracle和MySql?)
  2. 如果对象是过分杀死,然后使用的参数化SQL查询。
  3. 使用存储程序仅为长期运行的或复杂的行动, 需要执行上的 数据库。

这使我想到我 主要的问题。 这名字空间,我应该使用的代码,我的达尔?

它看起来对我的选择是 System.Data.ODBCSystem.Data.OleDB:

  • 是什么平衡?
  • 是一个优先于其他?
  • 你有什么想法的有关第3标准?
有帮助吗?

解决方案

系统。数据。SQLClient

连接到SQL Server2000和以后只,但你会得到最佳表现在连接到这些数据库。

系统。数据。OledbClient

连接到SQL6.5

OLEDBClient让你能够连接到其他的数据库,如ORACLE或访问。但是对于工作与SQL服务器你将得到更好的使用性能SQLClient.

注:连接到ORACLE、微软也有ORACLEClient.

系统。数据。ODBCClient

连接到遗产数据库,使用ODBC drivers.(E g。MS Access97.)

原来源

其他提示

你想使用的SQL服务器驱动器。我明白你正在尝试做的但这样你会完成支持多个数据库是通过插入另一个层的抽象概念。你可以这样做,许多方面。但是你把数据库的特定代码的边缘的类层次。因此,每一类可以得到的好处数据库的特定功能,但在更高水平的呼叫者不知道也不在乎什么数据库正在用于下方。尽中,我喜欢 LLBLGen, 但这只是我的首选。

还有,只是为了澄清,皇宫不是具体到SQL服务器。这是皇宫-对-SQL。皇宫是一个查询的技术,可以使用在皇宫-对-SQL,皇宫到实体、皇宫-对的对象,甚至LLBLGen支持皇宫.

无论你是否使用SQLClient或Odbc现在,如果你使用存储程序或其他数据库的具体特征,你就必须要改写这些,如果你改变数据库引擎。

我只是使用SqlClient和重新写入/重新产生DAL如果它改变。

除非你打算实施和测试在多个平台,现在,我不确定额外的努力现在是一个大问题或任何低于努力恢复达尔,以及事实上,你已经有了一个DAL在所有意味着你已经有了一切都在一个地方用于以后的变化。

如果你有任何的暗示,你就可交换的数据库(或支持多种后台)然后,一个奥姆的路要走。否则,你将仍有重构/改写了很多你的DAL为了支持改变。如果你的程序是小,也不是坏的,但任何实质性的,你会被伤害。

你会发现使用SQL服务器的SqlClient远远更快和更易于开发比OleDB和ODBC-除非是非常可能你会需要支持多个平台,你会找到的好处大于风险你将需要重写你的DAL。

此外,使用OleDB/ODBC只有1种保持平台的独立性-你可以找到它更有效,有多个实现你的DAL,每使用一个客户的母的平台正在使用。

我听说它说,除非它是一个关键特征,你不应该担心太多关于维持平台的独立性。这就是说,

SQLClient会给你地访问,并应会更高性能的(它不需要做任何的抽象/翻译).

唯一的事情你要改变,以得到OLEDB工作与ODBC是你的连接串。OLEDB有一点客户端智能使它提供更好的业绩。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top