关于NHibernate的基本说明

时间:2009-11-03 17:34:27

标签: c# sql nhibernate orm

鉴于我非常擅长SQL和c#,

  1. 我应该像NHibernate一样学习另一层吗?
  2. NHibernate只是一个库(存储在数据库中)吗?或者这是一项服务?
  3. 我应该使用NHibernate还是ADO.NET Entity Framework?
  4. 如果您认为我应该学习/使用ORM,请告诉我您的首要原因。

5 个答案:

答案 0 :(得分:3)

只要您需要将数据库数据转换为业务对象或从业务对象转换数据库数据,就应该使用ORM,因为它将为您节省大量工作并使您能够专注于应用程序逻辑。

NHibernate是一个.NET库,可以根据您的配置方式将.NET对象映射到数据库表。在这个意义上它与实体框架相同,只是EF已经嵌入在.NET框架中,而NHibernate是一个必须在项目中引用的独立程序集。

最后但并非最不重要的一点是,如果您使用SQL Server,您应该将LINQ to SQL添加到可能的ORM候选列表中,EF更简单,并且在许多情况下它更合适。

答案 1 :(得分:2)

  1. 这取决于您的申请。
  2. NHibernate是一个库。所以这是一个DLL。
  3. 取决于你想要什么。 NHibernate基于Hibernate,经过了战斗测试。
  4. 任何人与SQL或C#有多好并不重要。在处理SQL和C#时,工具存在根本差距。除了我学会停止担心和使用ORM时我所拥有的所有其他生产力提升,我发现只需要处理C#,大部分时间都有很大帮助。我现在的工作中阻抗不匹配的情况要少得多,我相信这有助于减少错误。
  5. 您需要编写的代码越少,您需要维护的代码越少。 ORM允许您更少关注某些细节,因此您可以专注于更高级别的任务。

答案 2 :(得分:1)

  1. 不,我尝试了Fluent NH和Castle Active Record以及Spring Framework NH Extensions,但它们都模糊了基本操作并使事情变得不那么明显。开始使用原生NH,然后在一年后添加一层。
  2. 是的,NH是图书馆,而不是服务。但是你在代码中使用它的方式使它感觉就像一个服务(例如数据存储库服务)
  3. 我尝试了EF并发现它令人作呕,所以我会选择NH
  4. 对于类似OLTP的系统,ORM是未来的发展方向。不使用ORM就像不使用单元测试或非OOP语言编程。

答案 3 :(得分:0)

  1. 可能,但这取决于您通常写的应用程序类型。
  2. NHibernate主要是一个DLL,但还有更多。
  3. NHibernate(详情请阅读NHibernate, Entity Framework, active records or linq2sql
  4. 我最重要的原因是你可以使用Linq。现在,你几乎需要一个ORM来使用Linq。

答案 4 :(得分:0)

  1. 除非是一个非常小的应用程序,否则答案是'是'。
  2. 库。
  3. 我听到人们对EF发誓,但我对它非常怀疑。我也不喜欢将自己与所有微软技术联系起来。 NHibernate将是我的建议。
  4. 首先,你不想经历编写所有SQL和类等的时间和头痛;这不值得。其次,它允许更大的能力从一个RDBMS切换到另一个RDBMS,而无需更改太多代码。第三,它将在未来的数据库抽象等方面为您提供更多控制。