当前位置: 首页 > news >正文

NHibernate案例

参考:NHibernate中文帮助文档:.NET ORM框架全面指南-CSDN博客

NHibernate之旅系列文章导航 - 李永京 - 博客园

Your first NHibernate based application - NHibernate

创建Winform应用程序

创建Winform项目NHibernate,NuGet引入NHibernate包

创建数据库表

USE MASTER
GOIF EXISTS (SELECT TOP 1 1 FROM SYSDATABASES WHERE NAME='Demo')DROP DATABASE Demo
GOCREATE DATABASE Demo
GOUSE Demo
GOIF EXISTS (SELECT TOP 1 1 FROM SYSOBJECTS WHERE NAME='TestTable')DROP TABLE TestTable
GOCREATE TABLE TestTable
(Id NVARCHAR(50) PRIMARY KEY NOT NULL,Contents NVARCHAR(100)
)
GO

创建实体类和xml文件

TestTable.cs

属性一定要加Virtual

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace NHibernateDemo.Entity
{public class TestTable{public virtual string Id {  get; set; }public virtual string Contents {  get; set; }}
}

TestTable.hbm.xml

主键一定要用Id标签写,固定写法

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"assembly="NHibernateDemo"namespace="NHibernateDemo.Entity"><class name="TestTable" table="TestTable"><id name="Id" column="Id" type="String"><generator class="native"/></id><property name="Contents" column="Contents" type="String"/></class>
</hibernate-mapping>

hibernate.cfg.xml

<!-- 示例的hibernate.cfg.xml配置 -->
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"><session-factory><!-- 数据库连接设置 --><property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property><property name="connection.driver_class">NHibernate.Driver.Sql2008ClientDriver</property><property name="connection.connection_string">Server=.;Database=Demo;User Id=sa;Password=123;</property><!-- SQL方言 --><property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property><!-- 映射文件的位置 --><mapping assembly="NHibernateDemo" resource="NHibernateDemo.Entity.TestTable.hbm.xml"/></session-factory>
</hibernate-configuration>

创建SessionFactory的类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NHibernate;namespace NHibernateDemo
{public class MySessionFactory{private static ISessionFactory _sessionFactory;private static ISessionFactory SessionFactory{get{if (_sessionFactory == null){var configuration = new NHibernate.Cfg.Configuration();_sessionFactory = configuration.Configure("hibernate.cfg.xml").BuildSessionFactory();}return _sessionFactory;}}public static ISession OpenSession(){return SessionFactory.OpenSession();}}
}

查询

private void BtnQuery_Click(object sender, EventArgs e)
{using (var session = MySessionFactory.OpenSession()){var list = session.QueryOver<TestTable>().List().ToList();}
}
http://www.dtcms.com/a/270557.html

相关文章:

  • scp:上传大型数据集到实验室服务器
  • 2025年人工智能、虚拟现实与交互设计国际学术会议
  • 蛋白质序列-kappa参数计算算法解读
  • Linux——I/O复用
  • django 一个表中包括id和parentid,如何通过parentid找到全部父爷id
  • 微信小程序91~100
  • 什么是高防 IP?从技术原理到实战部署的深度解析
  • 制作MikTex本地包可用于离线安装包
  • springBoot使用XWPFDocument 和 LoopRowTableRenderPolicy 两种方式填充数据到word模版中
  • ARM单片机滴答定时器理解与应用(一)(详细解析)
  • Node.js 是什么?npm 是什么? Vue 为什么需要他们?
  • CVE-2025-32463复现
  • ✍️ Python 批量设置 Word 文档多级字体样式(标题/正文/名称/小节)
  • PHP 基于模板动态生成 Word 文档:图片 + 表格数据填充全方案(PHPOffice 实战)
  • 使用python 将多个docx文件合并为一个word
  • 【Unity】MiniGame编辑器小游戏(十)连连看【Link】
  • 实时地震分析:AI+Python如何帮我们提前感知大地的怒吼?
  • 使用 Docker 搭建 Go Web 应用开发环境——AI教你学Docker
  • NO.1数据结构绪论|数据结构|逻辑结构|物理结构|算法|算法的度量
  • 从救火到赋能:运维的职责演进与云原生时代的未来图景
  • 聚铭安全管家平台2.0实战解码 | 安服篇(二):无人值守自动化封禁
  • 【Unity】MiniGame编辑器小游戏(十一)消消乐【Crush】
  • 本地Qwen中医问诊小程序系统开发
  • 【目标检测之Ultralytics预测框颜色修改】
  • OpenCV哈希算法------Marr-Hildreth 边缘检测哈希算法
  • 基于DeepSeek构建的openGauss AI智能优化助手:数据库性能提升新利器
  • 微软 Bluetooth LE Explorer 实用工具的详细使用分析
  • 【DOCKER】-3 数据持久化
  • OpenCV图像增强秘籍:高通滤波与特效艺术
  • Web 前端框架选型:React、Vue 和 Angular 的对比与实践