首先,下载Nhibernate3.3.3 GA(http://sourceforge.net/projects/nhibernate/)

拿到bins下的文件:

新建项目,结构如下:

说明:

NHibernate.DataPortal是数据门户,

NHibernate.Domain是Model层,

NHibernateUI是界面层,典型的三层架构

对相关文件的解释:

NHibernate.Domain中,Entities文件夹内的Customer.cs

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace NHibernate.Domain.Entities {[Serializable]public class Customer {#region Customerpublic virtual string CustomerID { get; set; }public virtual string CompanyName { get; set; }public virtual string ContactName { get; set; }public virtual string ContactTitle { get; set; }public virtual string Address { get; set; }public virtual string City { get; set; }public virtual string Region { get; set; }public virtual string PostalCode { get; set; }public virtual string Country { get; set; }public virtual string Phone { get; set; }public virtual string Fax { get; set; }#endregion}
}

针对Customer的配置文件Customer.hbm.xml,同时把文件的属性的默认生成操作为“内容”,这里需要修改为“嵌入的资源”生成,因为NHibernate是通过查找程序集中的资源文件映射实体

View Code

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Domain" namespace="NHibernate.Domain.Entities"><class name="NHibernate.Domain.Entities.Customer,NHibernate.Domain" table="Customers"><id name="CustomerID" column="CustomerID" type="string" unsaved-value="0"><generator class="increment"/></id><property name="CompanyName" column="CompanyName" type="string"  /><property name="ContactName" column="ContactName" type="string"  /><property name="ContactTitle" column="ContactTitle" type="string"  /><property name="Address" column="Address" type="string"  /><property name="City" column="City" type="string"  /><property name="Region" column="Region" type="string"  /><property name="PostalCode" column="PostalCode" type="string"  /><property name="Country" column="Country" type="string"  /><property name="Phone" column="Phone" type="string"  /><property name="Fax" column="Fax" type="string"  /></class>
</hibernate-mapping>

NHibernate.DataPortal中NHibernateHelper类代码:

View Code

using NHibernate.Cfg;namespace NHibernate.DataPortal {public class NHibernateHelper {private ISessionFactory _sessionFactory;public NHibernateHelper() {_sessionFactory = GetSessionFactory();}private ISessionFactory GetSessionFactory() {return (new Configuration()).Configure().BuildSessionFactory();}public ISession GetSession() {return _sessionFactory.OpenSession();}}
}

NHibernate.DataPortal中CustomerDal类代码

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Domain.Entities;namespace NHibernate.DataPortal {public class CustomerDal {private NHibernateHelper nhibernateHelper = new NHibernateHelper();protected ISession Session { get; set; }public CustomerDal() {this.Session = nhibernateHelper.GetSession();}public CustomerDal(ISession session) {this.Session = session;}public void CreateCustomer(Customer customer) {Session.Save(customer);Session.Flush();}public Customer GetCustomerById(int customerId) {return Session.Get<Customer>(customerId);}public IList<Customer> GetCunstomers() {IList<Customer> list = null;list = Session.QueryOver<Customer>().List();return list;}}
}

关键点,与数据库打交道的配置文件hibernate.cfg.xml,把文件的默认“复制到输出目录”为“不复制”,这里需要修改为“始终复制”

View Code

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"><session-factory><property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property><property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property><property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property><property name="connection.connection_string">Server=.;initial catalog=northwind;Integrated Security=True</property><property name="proxyfactory.factory_class">NHibernate.Bytecode.DefaultProxyFactoryFactory,NHibernate</property>    <property name="show_sql">true</property><property name="command_timeout">10</property><property name="adonet.batch_size">10</property><property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property><mapping assembly="NHibernate.Domain" /></session-factory>
</hibernate-configuration>

NHibernateUI层窗体的调用

View Code

protected override void OnLoad(EventArgs e) {try {NHibernate.DataPortal.CustomerDal customerDal = new NHibernate.DataPortal.CustomerDal();this.dgvCustomerList.DataSource = customerDal.GetCunstomers();} catch (Exception ex) {throw new Exception(ex.Message);}}

最后显示结果

在这次使用过程中,发生了很多的问题,但是因为NHibernate 3.3.3版本刚出来不久,使用的案例比较少,特别是很多配置的地方特别不一样,所以费了很多的周折,写给自己备用,也希望给朋友你带来一些帮助

转载于:https://www.cnblogs.com/cpine/archive/2013/05/04/NHibernate%e9%85%8d%e7%bd%ae.html

Nhibernate3.3.3 GA使用初探相关推荐

  1. [Hibernate]在VS2010中应用NHibernate 3.2与MySQL

    在VS2010中应用NHibernate 3.2与MySQL 罗朝辉 (http://kesalin.cnblogs.com/) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...

  2. 遗传编程(GA,genetic programming)算法初探,以及用遗传编程自动生成符合题解的正则表达式的实践...

    1. 遗传编程简介 0x1:什么是遗传编程算法,和传统机器学习算法有什么区别 传统上,我们接触的机器学习算法,都是被设计为解决某一个某一类问题的确定性算法.对于这些机器学习算法来说,唯一的灵活性体现在 ...

  3. 响应式Spring Cloud初探

    响应式Spring Cloud初探 分类:工程 原文链接:The Road to Reactive Spring Cloud 作者:  JOSH LONG 译者: helloworldtang 日期: ...

  4. 经典算法研究系列:七、深入浅出遗传算法,透析GA本质【转载】

    本文由July 发表在他的博客中,原文参见http://blog.csdn.net/v_JULY_v/archive/2011/01/12/6132775.aspx,对遗传算法分析的很透彻,是学习算法 ...

  5. 2021年大数据Flink(九):Flink原理初探

    Flink原理初探 Flink角色分工 在实际生产中,Flink 都是以集群在运行,在运行的过程中包含了两类进程. JobManager: 它扮演的是集群管理者的角色,负责调度任务.协调 checkp ...

  6. 从壹开始微服务 [ DDD ] 之一 ║ D3模式设计初探 与 我的计划书

    缘起 哈喽大家周四好!又是开心的一天,时间过的真快,我们的 <从壹开始 .net core 2.1 + vue 2.5 >前后端分离系列共 34 篇已经完结了,当然以后肯定还会有更新和修改 ...

  7. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  8. Nhibernate3循序渐进(三): 一对多映射和级联保存

    我们知道, 对于数据库中的一对多关系, 我们在建表的时候, 应该在多表这里建立外键 我们准备这样一个场景, 大学里的系和学生, 一个系有多个学生 Department类和Xml如下: Departme ...

  9. las格式测井曲线_邹榕,等:顺北和托甫台区块奥陶系断裂结构单元测井响应特征初探...

    引用格式:邹榕,徐中祥,张晓明,等.顺北和托甫台区块奥陶系断裂结构单测井响应特征初探[J].油气藏评价与开发,2020,10(2):18-23.ZOUR, XU Z X, ZHANG X M, et ...

最新文章

  1. 2022-2028年中国钢铁电商产业竞争现状及发展前景预测报告
  2. oracle trunc()截断函数
  3. 自定义元素探秘及构建可复用组件最佳实践
  4. 最新版本的Silverlight Tools For Silverlight 2 RTW正式版
  5. 【C 语言】文件操作 ( 配置文件读写 | 读取配置文件 | 函数接口形参 | 读取配置文件的逐行遍历操作 | 读取一行文本 | 查找字符 | 删除字符串前后空格 )
  6. ubuntu之使用sublime text3搭建Python IDE
  7. MYSQL复制的几种模式
  8. Javascript和android原生互调
  9. 95-241-100-源码-Flink语义-Flink的exectly-once系列之两阶段提交概述
  10. windows winrar 指令_Windows上WinRAR.exe命令行参数说明(转载) .
  11. LeetCode(1137)——第 N 个泰波那契数(JavaScript)
  12. 每日一句20191224
  13. html代码格式化vscode,Vscode代码格式化
  14. MTK DDR进行ETT之后的压力测试--代码调整
  15. 腾达fh307没有显示服务器名,腾达(Tenda)FH307路由器无线WiFi密码和名称设置 | 192路由网...
  16. 认识Power BI
  17. 【南風-视觉】Ubuntu命令行安装QT
  18. [软件人生]感慨邱成桐!闲聊学术界
  19. 映射网络驱动器命令(转载)
  20. MATLAB水母搜索算法求解超市物流配送选址问题代码实例

热门文章

  1. 隐藏的iscroll元素显示后不能滚动问题
  2. Spring Boot笔记-@ComponentScan初步解析
  3. 软考系统架构师笔记-最后知识点总结(四)
  4. Qt文档阅读笔记-C++与QML混合编程(QML画饼状图)【通过信号与槽交互】
  5. Qt文档阅读笔记-The Meta-Object System解析及实例
  6. 用t430搭建虚拟服务器教程,T430完美使用VmWare
  7. backlog配置_Tomcat 配置详解和调优
  8. 西安后宰门小学_重磅!西安市教育局召开发布会,将有大动作!
  9. notepad++怎么换行命令_notepad++如何自动换行
  10. git tag怎么使用_GIT中tag使用,打版本必备