前言:

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

转载于:https://www.cnblogs.com/tibos/p/6201777.html

LSJ_NHibernate第一章 NHibernate介绍相关推荐

  1. 第一章网络介绍计算题及其解析[计算机网络]

    总结一下计算机网络学期课程所学,方便以后的复习和补充.       本文主要是第一章网络介绍计算题部分.需要掌握的知识点如下图.       需要手写记录的笔记pdf和课本pdf可私信. 文章目录 第 ...

  2. 乐行学院RabbitMQ学习教程 第一章 RabbitMQ介绍(可供技术选型时使用)

    乐行学院RabbitMQ学习教程 第一章 RabbitMQ介绍 RabbitMQ介绍 1.RabbitMQ技术简介 2.RabbitMQ其他扩展插件 2.1监控工具rabbitmq-managemen ...

  3. 第一章 Oracle介绍

    Oracle 10.2 概念 第一章 Oracle介绍 1.Oracle介绍 本章提供了针对Oracle数据库服务器的概述,包含以下主题 l Oracle数据库体系结构 l Oracle数据库特点 l ...

  4. 学神python全栈学习笔记CMDB系统---第一章 python_cmdb_介绍,项目开始

    第一章 python_cmdb_介绍,项目开始 本节所讲内容: 1.1  python cmdb系统介绍与需求分析 1.2  python cmdb数据库建模 1.3  python cmdb前端基础 ...

  5. 第一章, 介绍:挖掘twitter的数据

    mahout_xb的专栏 http://blog.csdn.net/mahout_xb/article/details/7341477 第一章, 介绍:挖掘twitter的数据 分类: data mi ...

  6. 网易云课堂Web安全工程师课程分享——第一章 Web介绍

    第一节 Web介绍 课程回顾: Web是什么? Web发展分为哪几个阶段? Web安全问题发展形势? Web的工作流程? 浏览器是如何工作的? 总结回答: Web指的是World Wide Web,平 ...

  7. Python(第一章)版本介绍,环境准备及IDLE使用

    第一章 本章概览 Python是一种跨平台,开源的免费的.解释型的高级编程语言.近几年发展势头迅猛.应用领域十分广泛,在Web编程.图像处理.黑客编程.大数据处理.网络爬虫和科学计算等领域都能找到Py ...

  8. Oracle 10.2 概念 第一章 Oracle介绍

    Oracle 概念(Oracle 10.2) 1.Oracle介绍 本章提供了针对Oracle数据库服务器的概述,包含以下主题 l Oracle数据库体系结构 l Oracle数据库特点 l Orac ...

  9. 《应用非线性控制》第一章(完)——介绍 1.3 本书的结构

    教材结构 因为非线性控制系统有着更加丰富且复杂的行为,因此它们的分析也相应得变得困难.从数学层面来说,困难来自于两个方面:1. 首先非线性方程不像线性方程,它们没有解析解,因此我们不能直接通过非线性方 ...

最新文章

  1. 有关 drop delete truncate 问题
  2. 当谷歌员工来到新公司的那一天,发现原来公司什么都没有
  3. 无界阻塞队列 LinkedBlockingQueue 原理探究
  4. X-007 FriendlyARM tiny4412 u-boot移植之内存初始化
  5. python代码示例下载-Python实现多线程下载脚本的示例代码
  6. Aspx页面中直接编写javascript脚本
  7. 【推荐系统】推荐系统主流召回方法综述
  8. alter database open resetlogs
  9. leetcode解题记录(二)
  10. 程序员的算法课(20)-常用的图算法:最小生成树(MST)
  11. 使用SQL数据库在Python中执行CRUD操作
  12. Mysql5.6.x版本半同步主从复制的开启方法
  13. linux小技巧--vim下多行注释和取消多行注释
  14. Weblogic的安装与卸载
  15. Linux下PCI设备驱动程序开发
  16. USB转RS422/485/232串口线异常问题记录
  17. IP-Guard申请外发流程说明
  18. python并行编程 - GPU篇
  19. pythonrefprop怎么设置_Refprop调用Excel设置步骤
  20. 如把联想电脑计算机图标放在桌面上,联想的电脑应用怎么放到桌面图标-?(图)...

热门文章

  1. python中csv库写入表头_python的pandas工具包,保存.csv文件时不要表头的实例
  2. vfp 修改本机时间_时间旅行调试
  3. linux slf4j找不到,slf4j+log4j2在tomcat8 下无日志输出
  4. linux包含绝对路径头文件,linux-kernel - 访问用户空间内存访问函数(如access_ok(),get_from_user())需要包含的头文件的确切路径。 - 堆栈内存溢出...
  5. python是动态_Python中的对象和动态性 [菜鸟的理解,高手莫入]
  6. python描述符与实例属性_Python 中的属性访问与描述符
  7. npm依赖管理peerDependencies
  8. 代码是写给人看的还是写给机器看的?
  9. Android的Broadcase的使用(读取短信和创建通知)
  10. yum install php72w,yum 安装 php72w-pecl-imagick 报错