• 使用NHibernate(2)-- 让程序跑起来


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

    clipboard

    clipboard[1]

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

    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,所有的实现都在源代码的 srcNHibernateDialect 下。

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

                    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是主键并且自增)

    clipboard[3]

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

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

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

    6,添加数据。

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

    clipboard[4]

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

    clipboard[5]

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

    7,查询数据

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

    clipboard[6]

        访问后:

    clipboard[7]

  • 相关阅读:
    使用visio 2007对现有的数据库进行反向工程
    GOOGLE地图坐标拾取方法、GOOGLE地图获取坐标方法
    Visio 2007中进行数据库建模时如何显示字段类型以及概念名称
    WCF把书读薄(4)——事务编程与可靠会话
    WCF把书读薄(3)——数据契约、消息契约与错误契约
    WCF把书读薄(2)——消息交换、服务实例、会话与并发
    Backbone.js developer 武汉 年薪8w-10w
    Java面试
    从pb文件中恢复计算图并在tensorboard中展示
    Ubuntu下解决u盘变成只读模式
  • 原文地址:https://www.cnblogs.com/FuzhePan/p/3652071.html
Copyright © 2020-2023  润新知