NHibernate(或其他值得推荐的ORM),现实生活中的例子?

时间:2011-02-19 23:04:56

标签: c# database nhibernate orm

我想学习C#中的数据库应用程序,我即将选择一些框架。我听到很多关于NHibernate的建议,但我还没有决定。

无论如何,我想知道在C#中是否有任何真实的NHibernate示例(有源代码),以便学习最佳实践等等?我知道所有这些都可能包含在文档中,但是工作示例有助于理解正确的开发模式。

6 个答案:

答案 0 :(得分:5)

查看Ayende@Rahien,NHibernate上有很多博客条目。另一个好的来源是NHibernate Forge。为了帮助您入门,这将特别有用:NHibernate Getting Started Guide。最后here你可以找到一个基于Northwind数据库的NHibernate项目的可下载工作示例。

答案 1 :(得分:4)

开源项目S#arp Architecture是迄今为止我所知道的NHibernate最好的例子:

即使感觉有时过度设计,也遵循在多层架构中实现NHibernate的最佳实践。

我个人学到了很多关于ORM和良好的松散耦合架构的知识 项目代码。

关于NHibernate的另一篇有价值的文章可以在CodeProject上找到:

答案 2 :(得分:2)

现实生活中的例子:Orchard使用NHibernate,Fluent NHibernate和Linq To NHibernate进行数据访问。它是由Microsofties构建的开源CMS。源代码位于CodePlex

答案 3 :(得分:1)

NHibernate是一个非常可靠的ORM,它允许您创建POCO类,使您的域模型非常干净并且更易于测试。

实体框架正在迅速发展。 EF4中的UI工具适用于小型应用程序,但很难通过版本控制,快速更改数据库架构等来管理这种开发。使用EF4 Code First方法(目前处于CTP阶段),EF4将更具吸引力

我过去曾使用LLBLGen取得了巨大的成功。

对于初学者,Webmatrix可以让您快速入门。查看Rob Connery的视频,了解如何将其与测试框架here

一起使用

答案 4 :(得分:1)

正如其他人所说,NHibernate是一个可靠的框架。它非常成熟,并且具有许多功能,可以让您准确控制日期会发生什么。

如果您刚刚开始使用数据库编程,那么您可能还需要考虑LinqToSql。它不像NHibernate那么强大,而且它已被more or less EOL编辑。但是,你在简单中获得的力量就会增加。它允许您在几分钟内启动并运行基本数据库应用程序,并允许您在第一次学习时进行实验。尽管获得第一个应用程序并运行它的简单性仍然足够强大,可用于构建类似Stack Overflow的内容。

一些不错的Linq to Sql初学者资源:

  • NerdDinner
  • ScottGu的系列:Using LINQ to SQL(链接到第9部分,因为它在顶部有1到8的链接)。虽然这个没有应用程序下载(我能说的最好)但它基本上会引导您构建应用程序。

如果您已经开始学习NHibernate,那么您也可以从上面链接的NerdDinner教程开始,看看Ayende关于将它移植到NHibernate的文章,以及关于NerdDinner与NHibernate映射的系列文章。还有一系列关于在WPF应用程序中使用NHibernate的文章(大多数其他教程都专注于Web应用程序)。

资源:

我无法强调的一件事是,一旦你超越了最初的“酷......我可以与数据库交谈”阶段,获取适当profiler的试用许可证(顶部)为您的平台。它将让您了解您的ORM发送给数据库的确切内容。这对于了解您正在做什么如何被转换为SQL以及解决您遇到的错误非常有价值。

无论您选择哪条路径,您还应该查看Data Access Practices Using Microsoft .Net: A Nerdly ComparisonData Development GPS: Guidance for Choosing the Right Data Access Technology for Your Application Today。虽然这些技术仅涵盖Microsoft技术,但它可以让您高度了解可用的内容以及何时可能适合您的项目(将来)。

答案 5 :(得分:0)

查看NHibernate addins项目http://code.google.com/p/unhaddins/

虽然这不是现实生产的例子,但那里的示例应用程序非常接近现实生活中的应用程序场景。这些例子是由众所周知和受尊敬的程序员编写的,他们展示了一些严肃的OOP和设计模式技巧。这绝对不适合初学者。