前言:

  说起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.配置文件错误

      /// <summary>
/// 链接信息,初始化NH
/// </summary>
public static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
var path = HttpContext.Current.Server.MapPath("/bin/hibernate.cfg.xml");
var cfg = new NHibernate.Cfg.Configuration().Configure(path);
_sessionFactory = cfg.BuildSessionFactory();
}
return _sessionFactory;
}
}

出错可能

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

LSJ_NHibernate第一章 NHibernate介绍的更多相关文章

  1. 《Getting Started with WebRTC》第一章 WebRTC介绍

    <Getting Started with WebRTC>第一章 WebRTC介绍 ​ 本章是对WebRTC做概念性的介绍. 阅读完本章后.你将对下面方面有一个清晰的理解:   .  什么 ...

  2. Mariadb第一章:介绍及安装--小白博客

    mariadb(第一章)   数据库介绍 1.什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以 ...

  3. Java 螺纹第三版 第一章Thread介绍、 第二章Thread创建和管理学习笔记

    第一章 Thread导论 为何要用Thread ? 非堵塞I/O      I/O多路技术      轮询(polling)      信号 警告(Alarm)和定时器(Timer) 独立的任务(Ta ...

  4. 【Bochs 官方手册翻译】 第一章 Bochs介绍

    Bochs 是一个可以完全模拟 Intel x86 计算机的虚拟机系统.它包含了 Intel x86 CPU 仿真.常见设备仿真.以及定制 BIOS.Bochs 可以虚拟多种不同类型的 x86 CPU ...

  5. 《Spring敲门砖之基础教程第一季》 第一章 概要介绍

    百度百科say: Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建.简单来说,Spring是一个分层的JavaSE/EEful ...

  6. 第一章 python介绍、变量、数据类型、流程控制语句等

    一.python介绍 1.python的诞生 python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(龟叔)于1989年发明,第一个公开发行版发行于1991年. ...

  7. MySQL高级第一章——架构介绍

    一.简介 是一个经典的RDBMS,目前归属于Oracle 高级MySQL包含的内容: MySQL内核 SQL优化工程师 MySQL服务器的优化 各种参数常量设定 查询语句优化 主从复制 软硬件升级 容 ...

  8. CS231n 2016 通关 第一章-内容介绍

    第一节视频的主要内容: Fei-Fei Li 女神对Computer Vision的整体介绍.包括了发展历史中的重要事件,其中最为重要的是1959年测试猫视觉神经的实验. In 1959 Harvar ...

  9. 第一章 Electron介绍 | Electron in Action(中译)

    Github 官方地址 代表作: Visual Studio Code Atom - Code editor. Github开源的代码编辑器,Electron起源地 Visual Studio Cod ...

随机推荐

  1. ruby编程语言-学习笔记4(第4章 表达式和操作符)

    4.6.9 范围  Flip-Flops:  ..和... ..和... 操作符不是基于方法的,无法重定义.(优先级比较低) x+1 .. x*x   #可以认为是x+1 至 x*x 的范围 因为操作 ...

  2. NEsper事件处理 z

    http://esper.codehaus.org/nesper/documentation/documentation.html 环境配置 NEsper库下载:下载网址 Vs2010环境集成 在项目 ...

  3. HDU4027 Can you answer these queries? 线段树

    思路:http://www.cnblogs.com/gufeiyang/p/4182565.html 写写线段树 #include <stdio.h> #include <strin ...

  4. lightoj 1008

    水题,开根号判断大致范围,再找即可. #include<cstdio> #include<cmath> #include<cstdlib> using namesp ...

  5. jps 显示process information unavailable解决方法

    jps 显示process information unavailable解决办法jps时出现如下信息: 4791 -- process information unavailable 解决办法: 进 ...

  6. Curl之获取外网IP

    获取外网IP:curl -s ifconfig.me

  7. ImageMagick使用小节

    ImageMagick是一个强大的开源图形处理软件,国内应该很少人用,至今仍在更新,放出全版本下载链接 http://ftp.icm.edu.pl/packages/ImageMagick/binar ...

  8. BestCoder Round #81 (div.2)C String

    总体思路好想,就是在找K个不同字母的时候,卡时间. 看了大神代码,发现goto的!!!!998ms #include<cstdio> #include<cstring> #in ...

  9. jQuery技术内幕电子版5

    4. 转换HTML代码为DOM元素 先创建一个文档片段DocumentFragment,然后调用方法jQuery.clean(elems, context, frag-ment, scripts)将H ...

  10. Com 笔记 -可连接对象

    首先 两个概念: 1.入接口 :源对象提供给客户调用的. 2.出接口 :源对象通过此接口可直接或间接调用客户.类似delegate 对于实现了出接口的对象称为可连接对象. 对应每一个出接口,可连接对象 ...