C# NHibernate

2024 年 8 月 29 日 | 4 分钟阅读

引言

NHibernate 是 .NET 平台上的一个对象关系映射 (ORM) 框架,它允许开发人员将领域对象映射到关系数据库。它是基于 Java 的 Hibernate ORM 框架的移植,为 .NET 开发人员提供类似的功能。本文将概述 NHibernate 以及如何将其与 C# 结合使用。

什么是 NHibernate?

NHibernate 是一个 ORM 框架,它允许开发人员以更自然的方式使用领域模型,即使用对象而不是 SQL 语句来表示数据。NHibernate 负责对象和数据库之间的映射,这样开发人员就可以专注于应用程序的业务逻辑。

NHibernate 架构

NHibernate 构建在 ADO.NET 框架之上,ADO.NET 提供与数据库的低级连接。NHibernate 使用一组配置文件来配置数据库连接、映射和其他设置。配置文件用于指定数据库方言、连接字符串和其他设置。

NHibernate 提供了一整套丰富的功能,包括

  1. 自动生成数据库操作的 SQL 语句。
  2. 支持事务和并发控制。
  3. 对象的惰性加载以提高性能。
  4. 支持缓存以减少数据库访问。
  5. 支持将继承层次结构映射到数据库表。

NHibernate 架构的核心组件如下

1. SessionFactory

它是 NHibernate 的入口点,负责创建 Session 对象。它是一个线程安全的对象,在应用程序启动期间只创建一次。

2. Session

它是一个轻量级对象,用于与数据库交互。Session 对象表示一个工作单元,其中工作单元是一组需要一起执行的操作。

3. Configuration

它用于在应用程序启动时配置 NHibernate。配置对象用于指定连接字符串、数据库方言、映射文件和其他设置。

4. 映射文件

NHibernate 使用映射文件在面向对象的代码和关系数据库之间进行映射。映射文件指定了每个对象及其属性如何映射到数据库表和列。

NHibernate 如何工作?

NHibernate 使用映射文件来定义领域模型和数据库之间的关系。这些映射文件描述了领域对象的属性如何映射到数据库模式。NHibernate 支持两种类型的映射文件

基于 XML 的映射文件,以 XML 格式定义。

流式映射,它使用 C# 代码定义领域对象和数据库之间的映射。

以下是 NHibernate 映射工作原理的示例。假设我们有一个具有以下属性的 Customer 类

C# 代码

我们可以使用映射文件来定义此类别如何映射到数据库。以下是 Customer 类的基于 XML 的映射文件示例

XML 代码

此映射文件定义了 Customer 类和数据库中 Customers 表之间的映射。它指定 Id 属性是表的主键,并且 FirstName、LastName 和 Email 属性映射到数据库中同名列。

NHibernate 还支持流式映射,它允许开发人员使用 C# 代码定义领域对象和数据库之间的映射。以下是使用流式映射定义 Customer 类映射的示例

C# 代码

此流式映射代码定义了与基于 XML 的映射文件相同的映射。它指定 Customer 类映射到数据库中的 Customers 表,并且属性映射到同名列。

NHibernate 还提供了一个会话对象,用于管理领域对象和数据库之间的交互。会话对象负责创建、检索、更新和删除领域对象,以及管理事务和并发。会话对象是轻量级的,设计为短期存在。它应该在需要时创建,并在工作完成后立即关闭。


下一主题C# 中的“any”