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

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.xdnf.cn/news/15111.html

相关文章:

  • thinkphp使用redis抢单实例
  • 提取出Wallpaper Engine壁纸的mpkg类静态壁纸
  • LKT4304稳定可靠高兼容性国产安全加密芯片
  • Linux操作系统之进程间通信:管道概念
  • Qt6中模态与非模态对话框区别
  • 基于Spring Boot+Vue的巴彦淖尔旅游网站(AI问答、腾讯地图API、WebSocket及时通讯、支付宝沙盒支付)
  • 以太网基础④IP 协议介绍与 IP 校验和算法实现
  • Deepseek搭建智能体个人知识库
  • HashMap的get与put流程源码深度解析
  • 详解CAN总线的位填充机制
  • LLM的表征做减法的是什么,自然语言是一个矩阵,怎么进行减法的
  • S7-1500——(一)从入门到精通1、基于TIA 博途解析PLC程序结构(二)
  • 服务器中source: not found解决方法
  • AP中的Execution Manager“非报告进程”和“伴随进程”概念解析
  • Django核心知识点详解:JSON、AJAX、Cookie、Session与用户认证
  • RAG实战之dify源码文件解析-pdf文件解析流程
  • QT6 源(158)模型视图架构里的文件系统模型 QFileSystemModel 篇一:属性,成员函数,与信号函数
  • 在 macOS 上安装与自定义 Oh My Zsh:让终端美观又高效 [特殊字符]
  • Microsoft AZ-305 Exam Question
  • Git常用指令
  • Python-文件操作
  • 如何将 AWS EBS 卷从 gp2 批量迁移到 gp3:完整指南
  • RabbitMQ 高级特性之事务
  • FPGA加速HMI实时渲染:复杂图形处理的并行计算方案
  • 【macOS】【Swift】【RTF】黑色文字在macOS深色外观下看不清的解决方法
  • 5.注册中心横向对比:Nacos vs Eureka vs Consul —— 深度解析与科学选型指南
  • 字体 Unicode 区块字符展示 PDF 生成器
  • MySQL 09 普通索引和唯一索引
  • 5N70-ASEMI电源管理领域专用5N70
  • 前端业务监控系统,异常上报业务,异常队列收集,异常捕获