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

C# 使用NHibernate连接MySQL实现数据的增删改查

使用 NHibernate 连接 MySQL 并实现数据的增删改查操作是一个非常典型的场景。以下是一个简单的示例,演示了如何配置 NHibernate 与 MySQL 连接并进行基本的 CRUD 操作。

目录

步骤 1: 安装必要的包

步骤 2: 配置 NHibernate

配置文件方式

代码方式

步骤 3: 定义实体类和映射

实体类

映射文件

步骤 4: CRUD 操作


步骤 1: 安装必要的包

首先,需要安装 NHibernate 和 MySQL 数据库驱动程序。在你的项目中,可以使用 NuGet 来安装这些包。打开 NuGet 包管理器控制台并运行以下命令:

Install-Package NHibernate 
Install-Package MySql.Data

步骤 2: 配置 NHibernate

接下来,配置 NHibernate。我们需要创建一个 NHibernate 配置文件或通过代码配置 NHibernate。

配置文件方式

创建一个 hibernate.cfg.xml 文件,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"><session-factory><property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property><property name="dialect">NHibernate.Dialect.MySQLDialect</property><property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property><property name="connection.connection_string">Server=localhost;Database=test;User Id=root;Password=password;</property><property name="show_sql">true</property></session-factory>
</hibernate-configuration>
代码方式

也可以通过代码配置 NHibernate,如下所示:

var configuration = new Configuration();
configuration.DataBaseIntegration(db =>
{db.ConnectionString = "Server=localhost;Database=test;User Id=root;Password=password;";db.Dialect<NHibernate.Dialect.MySQLDialect>();db.Driver<NHibernate.Driver.MySqlDataDriver>();db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;db.SchemaAction = SchemaAutoAction.Update;
});

步骤 3: 定义实体类和映射

定义一个简单的实体类和它的映射文件。

实体类
public class Person
{public virtual int Id { get; set; }public virtual string Name { get; set; }public virtual int Age { get; set; }
}
映射文件

创建一个 Person.hbm.xml 文件,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="YourNamespace" assembly="YourAssembly"><class name="Person" table="Persons"><id name="Id" column="id"><generator class="identity" /></id><property name="Name" column="name" /><property name="Age" column="age" /></class>
</hibernate-mapping>

步骤 4: CRUD 操作

配置好 NHibernate 后,就可以进行数据的增删改查操作了。

public class Program
{private static ISessionFactory sessionFactory;static void Main(string[] args){var configuration = new Configuration();configuration.Configure(); // 配置文件方式configuration.AddAssembly(typeof(Person).Assembly); // 加载映射文件sessionFactory = configuration.BuildSessionFactory();using (var session = sessionFactory.OpenSession())using (var transaction = session.BeginTransaction()){// 创建var person = new Person { Name = "John Doe", Age = 30 };session.Save(person);// 读取var retrievedPerson = session.Get<Person>(person.Id);Console.WriteLine($"Retrieved Person: {retrievedPerson.Name}, {retrievedPerson.Age}");// 更新retrievedPerson.Age = 31;session.Update(retrievedPerson);// 删除session.Delete(retrievedPerson);transaction.Commit();}}
}

数据库表脚本:

CREATE TABLE `person` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(255) DEFAULT NULL COMMENT '姓名',`age` int(11) DEFAULT NULL COMMENT '年龄',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

http://www.lryc.cn/news/417681.html

相关文章:

  • IDEA2024.2重磅发布,更新完有4G!
  • QWT+Qt Creator+MSVC的配置与使用
  • Netty高性能数据结构
  • 关于百度、微软语音合成的实现案例
  • 二叉树:镜像树,子结构,二叉树转链表,二叉树的倒数K个数,对称,Z型打印
  • 瑞秋,詹妮弗·安妮斯顿多年来与本·阿弗莱克保持着“调情”友谊 又一个詹妮弗
  • 指纹失效,忘记iPhone屏幕解锁密码怎么应对?
  • 09.XSS跨站脚本攻击(超详细!!!)
  • 讲解人工智能在现代科技中的应用和未来发展趋势-水文
  • 2.2 QT 环境配置
  • 2.类和对象(上)
  • 【实际案例】服务器宕机情况分析及处理建议
  • Linux系统之ncdu命令的基本使用
  • STM32L051K8U6-HAL-LED闪烁设计
  • 记一次远程API调用失败
  • 【力扣】746.使用最小花费爬楼梯
  • 06:【stm32】中断一:NVIC的配置
  • Flutter简介
  • WT2605C蓝牙语音芯片赋能对讲机新体验:无屏操控、音频解码与蓝牙音箱三合一
  • ctfshow-web入门-sql注入(web191-web195)
  • 【ARM】v8架构programmer guide(3)_ARMv8的寄存器
  • SpringIOC整合dbUtil做的增删改查以及转账业务的实现
  • 【Nacos无压力源码领读】(二) 集成 LoadBanlancer 与 OpenFeign
  • CP AUTOSAR标准之DefaultErrorTracer(AUTOSAR_SWS_DefaultErrorTracer)(更新中……)
  • SpringMVC (发送请求——>参数传递—— >响应数据)
  • 认识Modbus RTU与Modbus TCP
  • 如何在 Kubernetes 中使用 ClickHouse 和 JuiceFS
  • 云计算任务调度优化matlab仿真,对比蚁群优化和蛙跳优化
  • 基于双PI+EKF扩展卡尔曼滤波的PMSM速度控制simulink建模与仿真
  • 医疗器械注册资源宝库数屿医械官方平台!