LSJ_NHibernate第一章 NHibernate介绍
前言:
说起NHibernate网上资料真不少,但用的人却并不多,说起java的SSH框架大家可能就知道了,这里的H指的就是Hibernate,一款好用的ORM框架,在.net重写了这款好用的框架,名字叫NHibernate.
LSJ_NHibernate项目已开源,觉得有用的帮忙点个星星,非常感谢,地址:https://git.oschina.net/tibos/LSJ_NHibernate
我的NHibernate学习之旅也是从网上找资料开始,在此特别感谢以下两篇博客的博主,想学习的可以去看看,写的非常详细了
NHibernate系列文章一:NHibernate介绍 (丹妮大叔)
NHibernate从入门到精通系列(1)——NHibernate概括 (刘东)
根据项目的需求进行分析,简单的来说我们无非是做了两件事,1.把数据存进去,2.把数据取出来,术语:面向数据编程,我们选用ORM无非是满足需求,高效,规范
这里我把对数据库操作的需求分为4个等级
当你的项目达到第三个等级的时候,你就应该考虑使用ORM框架了,这样不单单是完成任务,还能更高效.
这里我列出学习过程中容易遇到的问题,方便大家更好的学习NHibernate
1.配置文件错误
1 /// <summary> 2 /// 链接信息,初始化NH 3 /// </summary> 4 public static ISessionFactory SessionFactory 5 { 6 get 7 { 8 if (_sessionFactory == null) 9 { 10 var path = HttpContext.Current.Server.MapPath("/bin/hibernate.cfg.xml"); 11 var cfg = new NHibernate.Cfg.Configuration().Configure(path); 12 _sessionFactory = cfg.BuildSessionFactory(); 13 } 14 return _sessionFactory; 15 } 16 }
出错可能
1.配置文件hibernate.cfg.xml没有设置成始终复制,这样项目的bin文件里找不到配置文件
2.配置的数据库链接字符串出错
3.缺少对应驱动的dll,比如mysql就要引用相应的驱动
4.数据库账号的权限不够,NHibernate会自动隐射表,以及生成外键
2.未找到映射文件
出错可能
1.mapp文件没有设置成嵌入的资源
2.mapp里的类型跟实体类或者数据库里的类型不一致
3.联合查询,一对一,一对多,多对一没有关联到数据
出错可能
1.lazy="false" 没有设置成立即加载
初次搭建项目可能比较耗时,但是我觉得这个学习成本是值得的,特别是mapp里的类型,第一次建议不要复制粘贴,当你项目能够正常运行,恭喜你成功了第一步,接下来为大家介绍几款工具,让NHibernate如虎添翼.
1.代码生成器 推荐动软代码生成器,当然根据个人喜好,比如T4....,动软的代码生成器模板默认就支持NHibernate,我根据自己项目需求重写了模板,模板放在项目的DB文件夹下,可以直接生成Mapp,Model,IDAL,DAL,BLL,百度上面有使用教程,非常的简单.
2.sql跟踪器,推荐NHProf.exe 可以记录某个过程中执行的所有sql语句,以及耗时,非常的实用.
比如我的一个关联查询,它会自动记录执行的sql语句,以及参数,耗时