【问题标题】:Is there any way in .NET, other then Oledb to be database independent除了 Oledb 之外,.NET 中有什么方法可以独立于数据库
【发布时间】:2011-09-13 09:32:28
【问题描述】:

有没有办法可以在不同的数据库中重复使用我的 DAL 类?

我知道一些技术(Linq 和 EF)支持快速开发,我很欣赏这个功能,但我也希望我的 DAL 代码能够在不同的数据库中重复使用。

想到的一个简单的事情是使用 Oledb 和内联 SQL 查询,有没有更优雅的方法?请指导我。我只考虑两件事。

  1. 支持 4 种最常用的数据库(SQL Server、My SQL、Access、Oracle)。
  2. 快速开发支持。

谢谢

【问题讨论】:

标签: c# .net c#-4.0 data-access-layer


【解决方案1】:

您可以考虑使用ORM framework,例如Entity FrameworkNHibernate。这样,您的数据访问层将与数据库无关。

【讨论】:

  • 谢谢@Darin,EF 也支持 ACCESS 和 MY SQL 吗?是否允许批量插入、转换和批量编辑?
【解决方案2】:

如果您坚持使用接口 (IDbConnection, IDbCommand, ...) 及其工厂方法 (IDbConnection.CreateCommand),那么唯一需要知道您使用的数据库的代码就是初始连接创建 (可以封装)。

【讨论】:

  • 感谢@Richard,但是使用接口会消耗更多的开发时间,而且不会那么快。请指教。
  • @user576510 如果您想要数据库独立性,您需要正确处理所有问题并测试您肯定支持的所有案例。便携性更复杂,也更耗费资源。
  • @user576510:如何将尽可能多的代码从数据库引擎的依赖中解耦“消耗更多的开发时间”?在这种情况下,通过接口进行抽象的想法是最大限度地减少为支持不同的数据库引擎而需要完成的工作量。
【解决方案3】:

Entity Framework 做你想做的工作。最常用的数据库都支持它,但 Oracle 除外。对于 Oracle,您必须使用第三方组件,因为 Oracle 对实体框架的官方支持仍处于测试阶段。

【讨论】:

  • EF 也支持 ACCESS 和 MY SQL 吗?是否允许批量插入、转换和批量编辑?
  • 据我所知,不支持 Access。但是 MySQL 是通过 connector/NET 支持的。
猜你喜欢
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多