当前位置: 首页 > 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.lryc.cn/news/583311.html

相关文章:

  • SAP ERP与Oracle EBS对比,两个ERP系统有什么区别?
  • aichat-core简化 LLM 与 MCP 集成的前端核心库(TypeScript)
  • C#项目 在Vue/React前端项目中 使用使用wkeWebBrowser引用并且内部使用iframe网页外链 页面部分白屏
  • Spring IoC 如何实现条件化装配 Bean?
  • HUAWEI HiCar6.0的新变化
  • 一条Redis命令是如何执行的?
  • C++随机打乱函数:简化源码与原理深度剖析
  • 从零开始学前端html篇2
  • 微信小程序控制空调之微信小程序篇
  • 双esp8266-01s间TCP通讯
  • 图像硬解码和软解码
  • RAM带宽计算及分析
  • 区块链系统开发技术应用构建可信数字生态链
  • 以太坊智能合约核心技术解析与应用实践
  • Android 组件内核
  • NO.2数据结构线性表|线性表|顺序表|链表|单链表|双向链表|循环链表|静态链表|插入|删除
  • Qt-翻金币案例
  • 鸿蒙商城开发:ZKmall开源商城系统特性适配与性能优化
  • upload-labs靶场通关详解:第18关 条件竞争
  • CMake构建项目报错“No CUDA toolset found.”
  • android——热修复(补丁)
  • [Pytest][Part 4]多种测试运行方式
  • 三、Docker常用命令
  • 安装nvm管理node.js,详细安装使用教程和详细命令
  • 字体 Unicode 区块字符展示 PDF 生成器
  • 身份证识别api-便捷生活与安全社会的双重保障
  • Ubuntu 下 MySql 使用
  • 【Unity】MiniGame编辑器小游戏(十)连连看【Link】
  • VsCode 接入Continue 远程调用(持续扩展 + DeepSeek R1)— 免本地算力
  • Vim 编辑器常用操作详解(新手快速上手指南)