最近刚开始接触NHibernate三层框架,确实是遇到了不少大大小小的问题,总算是比较理解了这种模式。但是当我进行测试是,总是有一个异常出现的频率极其高,就是 no persister for:×××.×× 。到网上也查了,发现导致这种错误差不多也就三种常见的原因。
一,是映射文件或配置文件命名错误,eg:News_T.hbm.xml和NHibernate.cfg.xml就是正确的,而New_T.xml和NHibernate.xml就是错误的。
二,是配置文件里面缺少 <mapping assembly="×××"/> 语句。
三,xml文件属性生成操作一定要设置为“嵌入的资源”。
我就很仔细的一遍遍的检查自己有没有这样的错误,这不断检查和摸索的过程中居然发现造成这种错误的原因还有很明显的一种,那就是映射文件中的内容没有和实体中还有数据库中数据的定义分别对应,所以一定要注意细节问题啊!最后几乎没有发现有什么错误了,可是还是没有测试成功,简直是折腾人。不过,最后才发现原来是并不是我的所有的xml文件的生成操作都设置为“嵌入的资源”,我一直以为只需要将配置文件的设置就好了,原来是要所有的啊!更要命的就是,我无意中中把某些映射文件设置为嵌入的资源,所以有些测试成功了,有些没有设置的就怎么也成功不了,我也怎么找不到出现异常的原因。