在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

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三