开始学习NHibernate了 (3):实验及排错篇
2008-01-25 13:13
459 查看
今天延续昨天的工作,继续进行,昨天让我对Nh有了进一步的理解和应用。今天继续编写自己的一个程序,目的:
1、使用 Nhibernate 进行持久层管理
2、3层架构,可以应用到 WinForm 程序,也可应用到 WebForm程序。
3、Model 层的CURD.
4、BLL/DAL层方面的管理。
结果出现了一下的错误,进行了排查之后,呵呵~ 用Nhibernate终于成功的进行了一个表数据的添加。
错误如下,可能大家犯过和我类似的错误吧,下面是我的解决方法:
====================================================================
结构框架
SysMgr 执行程序 命名空间 SysMgr 程序集 SysMgr
Model // 命名空间 Rizi.SysMgr.Model 程序集 Model
BLL //暂时没有用
DAL //暂时没有用
1、未处理的“NHibernate.HibernateException”类型的异常出现在 NHibernate.dll 中。
其他信息: A ManifestResourceStream could not be created for the resource Rizi.SysMgr.Model.hibernate.cfg.xml in Assembly SysMgr, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
解决:
源码:
Configuration cfg = new Configuration().Configure(
Assembly.GetExecutingAssembly(), //当前代码正从中运行的程序集。
NAMEPLACENAME + ".hibernate.cfg.xml");
出错原因 NAMEPLACENAME = "Rizi.SysMgr.Model" 写成了Model层的命名空间,这个是错误的。
hibernate.cfg.xml 选择“嵌入的资源”
把 NAMEPLACENAME 改成 “SysMgr” ,错误解除。
2、Could not add assembly Rizi.SysMgr.Model
解决:在hibernate.cfg.xml文件的下面是:
<!-- 映射文件 -->
<!--程序将加载Rizi.SysMgr.Model命名空间所有的映射文件(*.hbm.xml)-->
<mapping assembly="Rizi.SysMgr.Model" />
这个是不对的,因为NHibernate加载的是程序集,可是 Rizi.SysMgr.Model 的程序集是 Model,所以无法加载。改成
<!-- 映射文件 -->
<!--程序将加载Rizi.SysMgr.Model命名空间所有的映射文件(*.hbm.xml)-->
<mapping assembly="Model" />
错误消失。
3、Could not compile the mapping document
解决:在Model的程序集中自己的“MEntitySysItem.hbm.xml”文件中:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Rizi.SysMgr.Model" namespace="Rizi.SysMgr.Model">
其中 assembly="Rizi.SysMgr.Model" 也是和上面犯的错误一样,所以无法编译
改成:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Model" namespace="Rizi.SysMgr.Model">
错误解除。
注意,*.hbm.xml 都是”嵌入的资源“
经过以上3个 错误的解除,程序顺利执行。
Nhibernate 初探到此告一段落。
1、使用 Nhibernate 进行持久层管理
2、3层架构,可以应用到 WinForm 程序,也可应用到 WebForm程序。
3、Model 层的CURD.
4、BLL/DAL层方面的管理。
结果出现了一下的错误,进行了排查之后,呵呵~ 用Nhibernate终于成功的进行了一个表数据的添加。
错误如下,可能大家犯过和我类似的错误吧,下面是我的解决方法:
====================================================================
结构框架
SysMgr 执行程序 命名空间 SysMgr 程序集 SysMgr
Model // 命名空间 Rizi.SysMgr.Model 程序集 Model
BLL //暂时没有用
DAL //暂时没有用
1、未处理的“NHibernate.HibernateException”类型的异常出现在 NHibernate.dll 中。
其他信息: A ManifestResourceStream could not be created for the resource Rizi.SysMgr.Model.hibernate.cfg.xml in Assembly SysMgr, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
解决:
源码:
Configuration cfg = new Configuration().Configure(
Assembly.GetExecutingAssembly(), //当前代码正从中运行的程序集。
NAMEPLACENAME + ".hibernate.cfg.xml");
出错原因 NAMEPLACENAME = "Rizi.SysMgr.Model" 写成了Model层的命名空间,这个是错误的。
hibernate.cfg.xml 选择“嵌入的资源”
把 NAMEPLACENAME 改成 “SysMgr” ,错误解除。
2、Could not add assembly Rizi.SysMgr.Model
解决:在hibernate.cfg.xml文件的下面是:
<!-- 映射文件 -->
<!--程序将加载Rizi.SysMgr.Model命名空间所有的映射文件(*.hbm.xml)-->
<mapping assembly="Rizi.SysMgr.Model" />
这个是不对的,因为NHibernate加载的是程序集,可是 Rizi.SysMgr.Model 的程序集是 Model,所以无法加载。改成
<!-- 映射文件 -->
<!--程序将加载Rizi.SysMgr.Model命名空间所有的映射文件(*.hbm.xml)-->
<mapping assembly="Model" />
错误消失。
3、Could not compile the mapping document
解决:在Model的程序集中自己的“MEntitySysItem.hbm.xml”文件中:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Rizi.SysMgr.Model" namespace="Rizi.SysMgr.Model">
其中 assembly="Rizi.SysMgr.Model" 也是和上面犯的错误一样,所以无法编译
改成:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Model" namespace="Rizi.SysMgr.Model">
错误解除。
注意,*.hbm.xml 都是”嵌入的资源“
经过以上3个 错误的解除,程序顺利执行。
Nhibernate 初探到此告一段落。
相关文章推荐
- 新闻上的文本分类:机器学习大乱斗 王岳王院长 王岳王院长 5 个月前 目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑 运用多种机器学习(深度学习 + 传统机器学习)方法比较短文本分类处
- linux学习——从一个小实验开始
- 开始学习NHibernate了(1):环境搭建篇
- 刚开始学习NHibernate
- 开始学习NHibernate了 (2):配置篇
- 今天开始学习NHibernate了!
- 开始Erlang学习
- 开始学习内存管理
- 开始学习存储,从EMC开始。
- erlang初步,从倾国倾城开始学习erlang,第一篇-基本语法
- 开始学习压缩感知
- 开始好好学习了,生活得有追求~~~
- ARM_Linux 驱动实验项目拉力赛正式开始:
- 刚开始学习iphone时可能用到的一些东西
- 开始学习ORACLE
- 2017.8.17 开始了我的QT 学习。
- 开始学习使用Birt
- 今天开始学习MFC
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第一步---开始界面&关卡选择
- 下一个系列学习列表Spring.net+NHibernate+MVC