在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

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面