前言:

  说起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. iOS开发 .framework的Optional(弱引用)和Required(强引用)区别, 有错误 Library not found………………

    http://www.cnblogs.com/wanyakun/p/3494323.html 强引用(Required)的framework是一定会被加载到内存的,但是弱引用(Optional)的fr ...

  2. 关于Sublime Text2 GBK编码的问题

    很多文章都说需要"ConvertToUTF8"和"GBK Encoding Support"连个插件. 其实GBK Encoding Support完全不需要, ...

  3. 基于WebForm+EasyUI的业务管理系统形成之旅 -- 系统设置(Ⅰ)

    上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 总体介绍>,主要介绍系统总体的界面效果和用户体验UI设计. 在MVC.MVP大行其道的今天,写WebForm该系列篇章, ...

  4. spring--JDBC的支持--7

    7.1  概述 7.1.1  JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: java代码: 以上代码片段具有冗长.重复.容易忘记某一步骤从而导致出错.显示控制事务.显示处 ...

  5. dev combobox edit 怎么设置让选项清空

    dev combobox edit 怎么设置让选项清空 功能需求: 点击combobox edit1的选项A 使得 combobox edit2出现选项a: 然后再点击combobox edit1的选 ...

  6. ashx文件结合ajax使用(返回json数据)

    ashx文件返回json数据: public void ProcessRequest(HttpContext context) { context.Response.ContentType = &qu ...

  7. Oracle10g数据类型

    1.     字符类型 数据类型 长度 说明 CHAR(n BYTE/CHAR) 默认1字节,n值最大为2000 末尾填充空格以达到指定长度,超过最大长度报错.默认指定长度为字节数,字符长度可以从1字 ...

  8. 录制屏幕(gif)便于在博客中嵌入软件licecap

  9. POJ 3468 A Simple Problem with Integers 线段树 区间更新

    #include<iostream> #include<string> #include<algorithm> #include<cstdlib> #i ...

  10. mysql 一个较特殊的问题:You can't specify target table for update in FROM clause

    mysql 一个较特殊的问题:You can't specify target table for update in FROM clause 即:不能先select出同一表中的某些值,再update ...