0

我有兴趣为现有系统使用对象关系映射器,该系统是 ASP.NET 客户端、ASP.NET Web 服务中间层和 Oracle 后端。所有数据库访问都使用存储过程完成,Web 服务中不允许使用 SQL。我一直在研究 NHibernate、Telerik 的 OpenAccess ORM 和实体框架。我将其命名为“隔离”,因为数据库由 DBA 严格控制。他们还控制数据库设计并重新设计数据库以实现足够的规范化(对于对象模型)几乎是不可能的。此外,允许该工具创建任何 SQL 也是不可能的。

我的问题是:考虑到这些限制,哪些工具可以为这种环境提供最佳集成?

4

3 回答 3

3

一个都没有。

通过在存储过程中完成所有操作,您不会使用 ORM 的 99% 的功能。

使用像 ServiceStack.OrmLite 或 Massive 等 Micro ORM 可能会更好......

但是查看任何完整的 ORM,如 NH、LightSpeed、EF,完全是过度杀伤,只会为 0 增益创建更多复杂性。

于 2012-03-26T02:12:55.900 回答
3

完全使用存储过程实现数据访问并不意味着您不会通过使用 ORM 获得任何价值。这只是意味着您可能不会使用它的一些好处。

至于您评估过的 ORM,您可能已经注意到:

  • 它们都支持 Database First 方法,您可以在已经定义数据库之后创建模型,因此您不必以任何方式干扰 DBA 的工作,只需要求提供凭据
  • 实体框架和 OpenAccess 提供开箱即用的模型的可视化表示,而 NHibernate 没有
  • OpenAccess 和 NHibernate 支持 Oracle,而使用 Oracle 的实体框架并不那么简单
  • Entity Framework 和 OpenAccess 中的存储过程支持比 NHibernate 中的要复杂得多。在 OpenAccess 中,您甚至可以将存储过程映射到多个结果集。

我希望这会有所帮助。

于 2012-03-27T08:13:02.353 回答
1

让我把这件事做对。你的约束是:

  • 你必须使用 ORM
  • 您不能以任何方式修改数据库。
  • 您只能使用存储过程。

我想我同意@Phill。当你不能使用它的功能时,一个完整的 ORM 是多余的。

顺便说一句,我曾经在这样的系统上工作过,在该系统中,DBA 独占鳌头,只授权程序访问数据。恶梦。

于 2012-03-26T02:16:05.733 回答