没有持久性:NHibernate.Examples.QuickStart.User

时间:2010-01-03 20:59:08

标签: c# asp.net vb.net nhibernate

问题:我对nhibernate有一个恼人的问题 问题是我无法得到我在网上找到的任何例子...... 我现在已经试了两天......


第一个问题是它不会读取配置文件,因此我不得不将其移至app.config / web.config

第二个问题是无论我做什么,我总会得到一个错误: 没有持久性:NHibernate.Examples.QuickStart.User
我搜索了谷歌,我确实将映射更改为嵌入式ressource,我确实将映射添加到配置文件中,但没有任何帮助......

该示例来自此页面: https://www.hibernate.org/362.html

我已将我的Visual Studio 2005项目上传到
http://verzend.be/exchange/NhibernateCrap.rar

有人知道我做错了吗?

2 个答案:

答案 0 :(得分:3)

以下是我必须修复以使代码正常工作的所有内容:

  • Configuration.LoadMappingDocument仅验证映射,但不会将其添加到配置中,即它按照记录的方式工作。它应该有一个更好的名称(如ValidateMapping或其他东西)。请改用AddFileAddDocument或类似内容,但我建议使用AddAssembly并将映射作为资源嵌入;
  • 在编写<class name="NHibernate.Examples.QuickStart.User, NHibernate.Examples"时的映射中,逗号后面的部分是程序集名称。它应该是<class name="NHibernate.Examples.QuickStart.User, NHibernateCrap",或者您应该更改程序集名称(我建议这样做);
  • 我不得不将映射XML名称空间更改为2.2:<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  • 最后,因为默认情况下NHibernate延迟加载,您必须使所有属性成为虚拟或禁用延迟加载(不推荐)。这方面的例子实际上是错误的;

为了进一步学习,我建议您阅读Gabriel Schenker的NHibernate tutorials

答案 1 :(得分:0)

清理命名空间和程序集名称,它可能会起作用。当你的bug存在时,请不要让别人找到你的bug,因为代码很乱。