您的位置:首页 > 其它

NHibernate初学问题总结一

2006-09-05 12:17 316 查看
昨天刚开始研究NHibernate就遇到了一个问题,在这里非常感谢 DDL,是他帮了我很大忙!

起初先DDL的NHibernate快速起步一文,然后下载了文章中的范例,自己小试了一把,然后写了一个Console程序,调用DDL类中的方法没问题,由于没装2005所以没打开工程,只是看看里面的代码。后来自己写了一个
测试类,按照DDL测试类中的写法就是不行总是报不能找到实体类User,后来和DDL聊天过程中发现了需要把实体类的配置文件User.hbm.xml加载进来,然后自己又多写了一句话

cfg.AddXmlFile("Goody9807.NhibernateTest.User.hbm.xml"); 才可以通过,但为什么DDL的方法就没问题呢?

后来才发现他是在程序中配置的,需要把xml文件设置为嵌入资源,如图所示:

而自己的写法是另一种方式
我的代码是:

1using System;
2
3using NHibernate;
4using NHibernate.Cfg;
5using NUnit.Framework;
6
7namespace Goody9807.NhibernateTest
8

另外文档上写得有些不明白


一个(某些时候更好的)方法是让NHibernate自行用
GetManifestResourceStream()
来装载映射文件

Configuration cfg = new Configuration()
.AddClass( typeof(NHibernate.Auction.Item) )
.AddClass( typeof(NHibernate.Auction.Bid) );

好像也不行,为什么?

NHibernate 就会在这些类型的程序集的嵌入的资源中寻找叫做
NHibernate.Auction.Item.hbm.xml
NHibernate.Auction.Bid.hbm.xml
的映射文件。这种方法取消了所有对文件名的硬编码。

另外一个(可能是最好的)方法是让NHibernate读取一个程序集中所有的配置文件:

Configuration cfg = new Configuration()
.AddAssembly( "NHibernate.Auction" );

这个有什么用?

兄弟刚开始学习NHibernate,所以有什么东西不对,还需指教,希望能和大家交流!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: