1, 创建一个MVC的程序,NHibernateDemo,并用NuGet安装NHibernate。

安装引用后,NuGet会自动安装NHibernate所依赖的类库 Iesi.Collections 

2,配置NHibernate。

首先在Web.config的configSections节点下添加如下配置,声明NHibernate的节点:

<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />

然后,添加数据库连接字符串的配置

<add name="SqlServer" connectionString="server=.;database=NHDemo;uid=sa;pwd=123456" />

最后,在configuration节点下添加NHibernate相关的配置:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">

    <session-factory>

      <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>

      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>

      <property name="connection.connection_string_name">SqlServer</property>

      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>   

    </session-factory>

</hibernate-configuration>

配置说明:

dialect: 指定NHibernate所使用的方言类(全称),所谓方言是指,不同的数据库所使用sql语法不大一样,可以让NHibernate使用某些特定的数据库特性。这些方言类都继承自抽象类Dialect,所有的实现都在源代码的 src\NHibernate\Dialect 下。

connection.driver_class:数据库驱动类,NHibernate使用这个类来和相应的ADO.NET驱动交互。 这些类的实现在NHibernate源代码的 src\NHibernate\Driver目录下。

connection.connection_string_name: 指定要使用的数据库连接字符串名。

connection.provider : 用来管理数据库连接的打开和关闭,这个属性的目的是为了方便扩展对数据库连接的管理,若要扩展的话,实现IConnectionProvider,并修改此处的配置即可。NHibernate提供的默认实现是上面配置的NHibernate.Connection.DriverConnectionProvider。

3,添加实体及映射。

首先,在Model文件夹下添加用户实体类,代码如下:

 public User
{
public virtual long Id {get;set;}
public virtual string name {get;set;}
}

注意,nhibernate要求每个属性都必须是virtual类型的。

然后添加映射文件 User.hbm.xml,注意此xml的生成属性需要修改为“嵌入的资源”,否则会出现异常“No persister for ”,因为nhibernate找不到映射文件。

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernateDemo">

  <class name="NHibernateDemo.Model.User, NHibernateDemo" table="NH_User">

    <id name="Id" column="Id" type="System.Int64">    

        <generator class ="native"/>

    </id>

    <property name="Name" column="Name" type="System.String" />

  </class>

</hibernate-mapping>


最后修改Web.config,在hibernate-configuration/session-factory节点下添加如下代码,告诉nhibernate映射文件所在的程序集

<mapping assembly="NHibernateDemo"/>

4, 添加数据库。

添加一个名为NHDemo的数据库,并添加和User实体对应的表。(表明:NH_User;两个字段:Id, Name,其中Id是主键并且自增)

5,在Global中的Application_Start方法的最后添加如下代码:

            var configure = new Configuration().Configure();
SessionFactory = configure.BuildSessionFactory();

首先创建一个Configuration实例,然后通过它创建SessionFactory。注意,项目大的话,SessionFactory的创建是很慢的,推荐一个应用中止存在一个SessionFactory就可以了。顾名思义,SessionFactory是用来创建Session的,我们对数据的访问都是通过它创建的Session。(不要和web中的session搞混,名虽一样,但不是一回事儿)

6,添加数据。

创建一个UserController,并添加如下代码,用于创建数据。

编译并访问 .../User/InitData:

这时候数据库中已经插入数据了。

7,查询数据

添加一个 用于查询数据的的Action,代码如下:

访问后:

最新文章

  1. 从小工到专家 ——读《Java程序员职场全攻略》有感
  2. Win8环境WPF打开和关闭软键盘
  3. BZOJ3343: 教主的魔法 分块
  4. TYVJ P1086 Elevator Label:dp
  5. 夺命雷公狗—angularjs—10—angularjs里面的内置函数
  6. oracle sql获取随机数
  7. C#中listbox中选中多项,并删除
  8. GITHUB基础使用教程
  9. redis中5种数据结构的使用
  10. 样式优先级、margin
  11. Visual Studio跨平台开发实战(1) - Hello Xamarin!
  12. 安装Team Foundation Server 2012过程截图
  13. python全栈开发-Day5 元组、字典
  14. Linux基本操作——文件相关
  15. android 实践项目四
  16. 炸弹人 之 N A B C D
  17. 【算法】Base64编码
  18. R语言进阶之4:数据整形(reshape)
  19. 用于调试的printf函数和自定义log函数
  20. RabbitMQ 启动

热门文章

  1. 转 Spring AOP @Before @Around @After 等 advice 的执行顺序
  2. user_mongo_in_a_docker_and_dump_database
  3. ERROR Function not available to this responsibility.Change responsibilities or contact your System Administrator.
  4. SQL Server中CROSS APPLY和OUTER APPLY应用
  5. solr特点二:Facet
  6. Hadoopd 单元测试-MPUnit
  7. C#注册表操作类(完整版) 整理完整
  8. 配置sql server 允许远程连接
  9. C#文字转换语音朗读或保存MP3、WAV等格式
  10. Java--下载历史版本登录账户