gpt4 book ai didi

nhibernate - Entity Framework 2 和 NHibernate 相比如何?

转载 作者:行者123 更新时间:2023-12-02 18:49:05 25 4
gpt4 key购买 nike

我基本上想知道以下内容:

  • 两者之间的优点/缺点?
  • 两个框架之间的相似点/差异?
  • 它们在架构上有何相似/不同?
  • 使用每个项目需要多少样板代码?
  • 与 NHibernate 相比, Entity Framework 能否在 Visual Studio 之外高效使用?与 Visual Studio 一起使用时, Entity Framework 是否比 NHibernate 更高效?

注意:此问题涉及 Entity Framework 2(目前仍在开发中)。

最佳答案

免责声明:这篇文章基于我目前对下一版本 Entity Framework 的了解。这可能不准确,或者在下一个版本实际发布之前可能会发生变化。

一般方法:

Entity Framework (EF) 的主要方法是使用其图形设计器工具创建实体数据模型并生成域类以及从该模型进行映射。其他方法也得到支持,但这种工作方式可能永远是主要方式。

NHibernate (NH) 是一个基于文本的工具,如果您不使用第三方软件(例如 CodeSmith 的 MyGeneration)或其他约定来生成代码,则需要用户手动编写所有域类和映射配置支持,例如 Fluent NHibernate。

代码生成:

代码生成是标准 EF 使用的主要部分,无论是使用其图形设计器工具还是使用命令行工具。 GUI 和命令行工具的可用性是一个优点,因为使 EF 易于上手,并允许更高级的自动化使用,例如在构建过程中。

NHibernate 不支持代码生成,除了模式生成内容(如果您想将其算作代码生成)。如果您转向第三方软件,您可以获得代码生成。

数据库架构生成:

EF 将通过允许用户从实体数据模型生成架构来添加对模型优先开发的支持。 NHibernate 长期以来一直支持模式生成。正如前面提到的,这里的区别在于创建“模型”的方式。

LINQ:

EF 将改进其古怪的 LINQ 实现(从 v1 开始),NH 现在已达到 LINQ to NH 的 1.0 版本,因此在这方面两者之间不应该有任何重大差异。

POCO:

EF 将为域驱动设计方法以及与数据访问层分离的域类的使用添加更好的支持。然而,由于 POCO 不是 EF 的主要用例,我无法真正看出他们的 POCO 支持如何达到 NHibernate 的水平。 EF 中的 POCO 支持还很年轻,对我来说,如果您是 POCO/DDD 支持者并且发现自己出于某种原因在 EF 上工作,那么这更像是一种奖励。

整个 NHibernate 框架是由 DDD 人员为 POCO 开发而构建的,他们已经达到了 2.1 版本,并利用了 Java 方面投入 Hibernate 的所有工作。在相当长的一段时间内,NHibernate 可能仍然是 DDD/POCO/ALT.NET 人群的第一选择。

延迟加载:

下一个版本的 EF 将包含对自动延迟加载的支持。长期以来,自动延迟加载一直是 NHibernate 的重要组成部分。

学习曲线:

这两个框架都很复杂且功能强大,因此需要很长时间才能掌握。但 EF 对初学者非常友好,因为它通过其图形设计器工具集成到 Visual Studio 中,并且它可以为您生成很多内容,而无需您了解有关该框架的任何信息。但是,如果您想深入了解 EF 并真正学习该框架,您应该做好花费大量时间使用它的准备。

NHibernate 的学习曲线是臭名昭著的,但最近的一些改进已经稍微降低了它。现在 LINQ to NH 已经是 v1.0 了,对于刚接触 NH 的开发人员来说,查询语法将更容易理解,而且 Fluent NHibernate 项目正在改善映射体验,甚至致力于自动映射,一切都变得越来越好。时间。

关于nhibernate - Entity Framework 2 和 NHibernate 相比如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1242684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com