【问题标题】:Need advice for large .net data access layer需要大型 .net 数据访问层的建议
【发布时间】:2010-11-06 11:47:06
【问题描述】:

启动一个新项目是针对一个非常大(300 个表)的旧数据库进行 100% 的新开发。数据库与业务模型的匹配度并不高,所以我最初的想法是在哪里使用 ORM。

我得到了一个与 NHibernate 很好地合作的概念证明......但是在使用“不受支持的”“开源”工具方面得到了很多管理层的反对。

对使用其他 ORM 解决方案有什么建议吗?或关于 NHibernate 论点的建议?

非常感谢。

【问题讨论】:

  • 如果您使用 NHibernate 或其他东西,我肯定会向管理层解释,使用“不受支持的”开源工具并不比使用商业产品风险更大。了解开源如何工作并正确估计开发中的风险是您的经理的工作。不称职的经理不是转向劣质产品的借口(当然,除非你是呆伯特)。
  • 如果您使用 NHibernate,NHProf 是一个非常有用的工具。
  • 刚刚更新了...我们走的是 NHibernate 路线!!!我们使用几个领先的 orm 进行了概念验证,NHibernate 获胜。简单地向管理风险和回报的事实陈述事实,他们批准了该决定。

标签: .net database nhibernate orm devforce


【解决方案1】:

如果您的管理层愿意为商业 ORM 付费,那么您最好考虑这条路线。

您可能(目前)使用 NHibernate 的一个限制(除非您愿意使用 NHibernateContrib 项目中的 Alpha 代码)是您目前没有使用 LINQ / IQueryable 机制来使用越来越多的查询熟悉的 LINQ 语法。您仍将拥有非常灵活的 Criteria 和 HQl 机制,这取决于您是否要开始投资于“以 LINQ 方式”做所有事情?

从我目前的研究来看,您有很多选择(都支持 LINQ 查询):

原始实体框架(有商业合作伙伴也在其之上添加工具和功能。)

Lightspeed 似乎是一种具有良好设计时支持的 LINQ-to-[lots of DB]。

Telerik OpenAccess 看起来类似于 Lightspeed。

IdeaBlade DevForce 建立在 EntityFrmework 之上,但增加了一些可用性特性。如果您不使用 SQL Server,那么使用 IdeaBlade 还需要从 DevArt 或 DataDirect 等单独的供应商处购买 ORACLE-EF 提供程序。

LLBLGen Pro 良好的功能范围和积极的开发。好久不见了。

DevArt 还为 LINQ 提供良好的数据访问工具和供应商特定的提供程序。

[更新] Production-ready LINQ support 现已在 NHibernate 中可用!

【讨论】:

    【解决方案2】:

    你为什么不问管理层这个?

    在 Hibernate/NHibernate 出现的时间里,Microsoft 创建并取消了多少数据访问解决方案?

    • ADO
    • ADO.NET
    • 强类型数据集
    • LINQ2SQL
    • 实体框架
    • 实体框架 V2

    这段时间Hibernate/NHibernate已经越来越成熟。它不会消失。

    【讨论】:

    • Plus NHProf 是一个巨大的卖点,请说出一个拥有自己支持工具的 Microsoft ORM?
    • 为 NHibernate 投票。尽管如此,我仍在拼命等待 LINQ 支持。 ^^
    【解决方案3】:

    我在最近的两个项目中使用了 Entity Framework,它们的表数量相似。它对我们来说效果很好。我们将表拆分为几个实体框架模型,最大 ca。一个模型中有 80 张桌子。

    Entity Framework 更容易出售给管理层,因为它是 Microsoft。

    【讨论】:

    • 回复:“X 更容易出售给管理层,因为它是 Microsoft。” ......我希望这是真的,而不仅仅是因为微软很大而且有很多钱。有时他们的东西不那么锋利。
    猜你喜欢
    • 2012-04-13
    • 2010-12-29
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    相关资源
    最近更新 更多