• 在C#中使用NHibernate框架查询数据


    建立NHibernateTest的Windows解决方案

    将Iesi.Collections.dll,log4net.dll和NHibernate.dll三个DLL文件放入Bin文件夹

    然后添加引用

    Nhibernate框架可到http://mesh.dl.sourceforge.net/sourceforge/nhibernate/NHibernate-2.0.0.Beta1-src.zip下载

    这是Beta1版本的,Beta2已经发布

    第一步:创建User实体类

     1using System;
     2using System.Collections.Generic;
     3using System.Text;
     4
     5namespace NHibernateTest
     6{
     7    [Serializable]
     8    public class User
     9    {
    10        private int _id;
    11
    12        public int Id
    13        {
    14            get return _id; }
    15            set { _id = value; }
    16        }

    17        private string _name;
    18
    19        public string Name
    20        {
    21            get return _name; }
    22            set { _name = value; }
    23        }

    24        private string _sex;
    25
    26        public string Sex
    27        {
    28            get return _sex; }
    29            set { _sex = value; }
    30        }

    31    }

    32}

    33

    第二步:创建该实体类的数据映射User.hbm.xml文件(xml文件)

     1<?xml version="1.0" encoding="utf-8" ?>
     2<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false">
     3  <class name="NHibernateTest.User,NHibernateTest" table="Users">
     4    <id name="Id" type="Int32">
     5      <generator class="identity"/>
     6    </id>
     7    <property name="Name" type="String"/>
     8    <property name="Sex" type="String"/>
     9  </class>
    10</hibernate-mapping>

    将该文件的属性进行如下调整(选中文件,按F4)

    赋值到输出目录选择    始终复制

    生成操作改成     嵌入的资源

    第三步:创建hibernate.cfg.xml配置文件(xml文件)

     1<?xml version="1.0" encoding="utf-8"?>
     2<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
     3  <session-factory name="NHibernate.Test">
     4    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
     5    <property name="connection.connection_string">
     6      Data Source=IMMENSITY\SQLEXPRESS;Initial Catalog=NHibernateTest;uid=sa;pwd=welcome;Pooling=False
     7    </property>
     8    <property name="adonet.batch_size">10</property>
     9    <property name="show_sql">false</property>
    10    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
    11    <property name="use_outer_join">true</property>
    12    <property name="command_timeout">10</property>
    13    <property name="query.substitutions">true 1false 0, yes 'Y', no 'N'</property>
    14    <mapping assembly="NHibernateTest"/>
    15  </session-factory>
    16</hibernate-configuration>
    17
    18

    更改属性(同上):

    赋值到输出目录选择    始终复制

    生成操作改成     嵌入的资源

    相关属性解释如下:

    hibernate-configuration:            NHibernate的版本信息
    session-factory:                       对应的类名称
    connection.provider:                 连接提供器的名称
    connection.driver_class:            连接驱动类的名称
    connection.connection_string:    数据库连接字符串
    show_sql:                                是否显示SQL语句
    Dialect:                                    NHibernate方言(Dialect)的类名
    use_outer_join:                        是否允许使用外连接
    query.substitutions:                  把NHibernate查询中的一些短语替换为SQL短语
    assembly:                               程序集名称 

    最后在button的onClick事件中加入如下代码:

    需导入以下两个命名空间

    using NHibernate.Cfg;
    using NHibernate;

     1using System;
     2using System.Collections.Generic;
     3using System.ComponentModel;
     4using System.Data;
     5using System.Drawing;
     6using System.Text;
     7using System.Windows.Forms;
     8using NHibernate.Cfg;
     9using NHibernate;
    10
    11namespace NHibernateTest
    12{
    13    public partial class Form1 : Form
    14    {
    15        public Form1()
    16        {
    17            InitializeComponent();
    18        }

    19
    20        private void button1_Click(object sender, EventArgs e)
    21        {
    22            //会话工厂
    23            ISessionFactory factory = null;
    24            Configuration cfg = new Configuration().Configure();
    25            //构建配置文件的对象
    26            factory = cfg.BuildSessionFactory();
    27            //实例化会话工厂
    28            ISession session=factory.OpenSession();
    29            //设定HQL查询语句,HQL语句只能用于查询
    30            //注意,这里的表名不是数据库的表名,是你的实体类的名称(User)
    31            IQuery query = session.CreateQuery("from User");
    32            //得到结果集
    33            IList<User> list = query.List<User>();
    34            //关闭会话对象
    35            session.Close();
    36            this.dataGridView1.DataSource = list;
    37            
    38        }

    39    }

    40}

    运行,得到数据

    我刚学习此框架,可能有说的不对的地方 ,忘各位指点 

    源文件下载:

    https://files.cnblogs.com/immensity/NHibernateTest.rar 

  • 相关阅读:
    【解决方案】如何通过RTSP协议安防视频直播平台EasyNVR打造智慧校园监控联网解决方案?
    【开发记录】网络摄像头RTSP协议视频流媒体平台EasyNVR服务演示模式的直播限时设定
    关于RTSP/GB28181协议视频平台EasyNVR/EasyGBS调取指定时间录像播放或下载接口时间说明
    【操作说明】新版网络摄像头RTSP协议视频平台EasyNVR中的直播秒开设置及应用说明
    RTSP协议外网视频直播监控方案EasyNVR+EasyNVS无法播放WS-FLV视频流如何解决?
    通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口步骤概览
    络摄像头RTSP协议安防视频可视化平台网页无插件直播平台EasyNVR录像如何存储不同磁盘上——windows版
    网络摄像头RTSP协议视频安防可视化平台EasyNVR录像如何存储不同磁盘上——Linux版
    【解决方案】基于RTSP协议实时视频播放平台EasyNVR为基础的应急平台中EasyNVS管理系统有什么作用?
    网络摄像头RTSP协议视频平台EasyNVR临时授权时间不显示在EasyNVS云管理平台上的原因排查?
  • 原文地址:https://www.cnblogs.com/immensity/p/1254205.html
Copyright © 2020-2023  润新知