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

2024-02-04 17:08

本文主要是介绍在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实体类

 

 1 using  System;
 2 using  System.Collections.Generic;
 3 using  System.Text;
 4
 5 namespace  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   1 false   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;

 

 

 1 using  System;
 2 using  System.Collections.Generic;
 3 using  System.ComponentModel;
 4 using  System.Data;
 5 using  System.Drawing;
 6 using  System.Text;
 7 using  System.Windows.Forms;
 8 using  NHibernate.Cfg;
 9 using  NHibernate;
10
11 namespace  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}

运行,得到数据

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

源文件下载:

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

这篇关于在C#中使用NHibernate框架查询数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/678231

相关文章

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的