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语句,以及参数,耗时

 

 

 

 

 

 

 

 

posted @ 2016-12-20 10:57  提伯斯  阅读(698)  评论(1编辑  收藏  举报