【问题标题】:.NET - Strategy for multi database support.NET - 多数据库支持策略
【发布时间】:2011-03-14 15:43:46
【问题描述】:

我们当前的 Web 应用程序正在使用 SQL Server,我们现在需要支持 Oracle。

有几个选项:

  1. 数据门面模式:在业务层使用数据门面接口,因此 SQL Server 和 Oracle 可以有自己的数据访问层实现。问题是很难为不同类型的数据库同步 DAL 代码。

  2. nHibernate:看起来很有希望,我没有使用它的经验。由于我们目前的数据访问层是混合SQL和存储过程的,不知道换成nHibernate是否会涉及很多工作(我们面临时间压力)。

我想听听您的意见。谢谢。

【问题讨论】:

  • Entity Framework 4.0 和基于接口的依赖注入的组合怎么样?为了克服为 Oracle/SS 同步 DAL 代码的“问题”,请使用 LINQ。 (用于 SS 的 LINQ-SQL,Codeplex 上有一个 LINQ-Oracle 项目)。您的接口将返回两个存储库都应遵循的 LINQ 类型(例如 IQueryable)。

标签: .net database nhibernate architecture


【解决方案1】:

我不明白为什么拥有一个同时支持 Oracle 和 SQL Server 的 DAL 会如此困难。具体来说,LLBLGen 做到了。如果是我,我会使用它。但那是因为我以前用过它,而且我是它的忠实粉丝。

【讨论】:

  • 这就是我们所做的。虽然在实践中我们只使用了 1 个数据库,但我们已经测试了从 Sql Server 切换到 Oracle、MySql 和 PostgreSQL 没有任何问题。像这样的 LLBLGen 很酷。
【解决方案2】:

NHibernate 对多数据库应用程序具有出色 支持。 Here 是一篇关于这样做时要考虑的事情的帖子。

但是,如果您有“时间压力”,并且您正在使用完全不同的方法(使用存储过程)更新应用程序,那么进行更改肯定不是一件容易的事。

【讨论】:

  • 存储过程在 nhibernate 中并不难修复
  • @jgauffin 这取决于。 NH 支持某些使用 SP 的方式,但依赖它们进行数据访问是很痛苦的。
  • 我没用过,只是看了一些关于nhibernate和存储过程的文章。你能详细说明他们为什么会痛苦吗?
  • 因为您必须做很多额外的工作才能确保它们正常工作,包括验证参数的顺序。此外,您需要注意对 SP 可以做什么的一些限制,最重要的是,您不能进行临时预加载。
【解决方案3】:

还没有人提到Microsoft Enterprise Library。我没有使用它,所以我无法提供建议,但我认为它值得进一步关注。前几天我在听一个播客,他们说数据库互操作性是一个设计目标。

【讨论】:

    【解决方案4】:

    ODP.NET 提供标准的 ADO.NET 数据访问,同时公开 Oracle 数据库特定的功能,例如 XML DB、数据访问性能优化和 Real Application Clusters 连接池。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 2011-11-10
      相关资源
      最近更新 更多