在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
NHibernate是一個強大的物件關聯映射(ORM)為 .NET 框架設計的框架。 它為開發人員提供了一種有效的方法,以銜接 .NET 應用程序的面向對象世界與資料庫的關聯世界之間的鴻溝。 通過使用NHibernate,您可以顯著減少實現數據訪問層所需的樣板代碼量,使您的 .NET 應用程序更簡潔且更易於維護。
像 NHibernate 這樣的 ORM 框架透過允許開發人員以物件及其屬性的方式而非 SQL 語句來處理資料,從而簡化了與關聯式資料庫的互動。 此抽象幫助開發人員更多地關注應用程式的業務邏輯,而較少關注底層的 SQL 命令和資料庫模式。 例如,NHibernate 處理所有 SQL 的生成和執行,允許通過簡單的物件轉換和物件操作來執行插入、刪除和更新等操作。
要在您的 .NET 項目中開始使用 NHibernate,第一步是安裝 NHibernate 套件。 這可以透過 Visual Studio 的 NuGet 套件管理器輕鬆完成,使用以下指令:
Install-Package IronPdf
一旦 NHibernate 安裝完成,下一步就是配置它。 這涉及創建一個 Hibernate 映射文件,其中包含資料庫伺服器設置以及對象與資料庫表之間的映射細節。 主要的 XML 文件,通常命名為 hibernate.cfg.xml
,包括資料庫連接字串、方言及其他資料庫特定的設置。
<?xml version="1.0" encoding="utf-8" ?>
<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.SqlClientDriver</property>
<property name="connection.connection_string">
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
</property>
<property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
<property name="show_sql">true</property>
<mapping resource="Employee.hbm.xml"/>
</session-factory>
</hibernate-configuration>
NHibernate 的關鍵組件之一是會話工廠,它是使用工廠設計模式設計的。 此元件創建 Session 物件來管理與資料庫的連接,並執行事務操作。 由於建立會話工廠成本高,因此通常只在應用程式生命週期中建立一次,這使得它成為性能優化的重要元素。
NHibernate 圍繞著幾個基本類別和方法運作。 例如,ISession
介面在 NHibernate 中扮演著基本角色,促進資料查詢和操作會話的創建。 像 OpenSession
這樣的方法幫助開發人員開始交易,執行 SQL 指令,並使用 SQL 語句或 NHibernate 自己的 HQL 查詢資料庫。(Hibernate 查詢語言).
在 NHibernate 中的實體映射是透過映射檔案實現的,通常以 XML 編寫。 這些文件通常以實體類命名。(例如,Employee.hbm.xml),定義實體屬性如何映射到資料庫表的欄位。 一個典型的映射文件包括類名、表名和每個屬性的詳細信息,包括主鍵、列名和數據類型。
在這些映射檔案中,您可以為每個屬性指定各種屬性,例如非空約束或唯一約束。 NHibernate 也允許進行複雜的映射,如一對多和多對一關係,為在面向物件的框架中表示關連數據結構提供了一套強大的工具。
NHibernate 簡化了 CRUD(建立, 讀取, 更新, 刪除)通過抽象底層的 SQL 命令來進行操作。 開發人員可以透過使用 ISession
介面提供的方法進行這些操作,而不需要撰寫明確的 SQL 代碼。 例如,要將新實體新增到資料庫,只需創建物件的新實例,設置其屬性,然後使用 ISession
的 Save
方法。
ITransaction
管理交易NHibernate 中的交易是通過 ITransaction
介面管理的,以確保數據的完整性和一致性。 使用 ISession
的 BeginTransaction
方法,開發人員可以確保在將數據提交到資料庫之前,所有操作均成功完成,如果出現問題則可以回滾,從而維持數據的穩定性。
此範例包括NHibernate配置和映射文件的設置,並演示如何使用NHibernate執行創建、讀取、更新和刪除操作。
using NHibernate;
using NHibernate.Cfg;
using System;
public class Employee
{
public virtual int Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
class Program
{
private static ISessionFactory sessionFactory;
static void Main()
{
sessionFactory = new Configuration().Configure().BuildSessionFactory();
CreateEmployee();
ReadEmployee(1);
UpdateEmployee(1, "UpdatedName");
DeleteEmployee(1);
}
static void CreateEmployee()
{
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var newEmployee = new Employee
{
FirstName = "Iron",
LastName = "Software"
};
session.Save(newEmployee);
transaction.Commit();
Console.WriteLine("Employee created: " + newEmployee.Id);
}
}
static void ReadEmployee(int id)
{
using (var session = sessionFactory.OpenSession())
{
var employee = session.Get<Employee>(id);
Console.WriteLine("Read Employee: " + employee.FirstName + " " + employee.LastName);
}
}
static void UpdateEmployee(int id, string newFirstName)
{
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var employee = session.Get<Employee>(id);
employee.FirstName = newFirstName;
session.Update(employee);
transaction.Commit();
Console.WriteLine("Employee updated: " + employee.FirstName);
}
}
static void DeleteEmployee(int id)
{
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var employee = session.Get<Employee>(id);
session.Delete(employee);
transaction.Commit();
Console.WriteLine("Employee deleted");
}
}
}
using NHibernate;
using NHibernate.Cfg;
using System;
public class Employee
{
public virtual int Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
class Program
{
private static ISessionFactory sessionFactory;
static void Main()
{
sessionFactory = new Configuration().Configure().BuildSessionFactory();
CreateEmployee();
ReadEmployee(1);
UpdateEmployee(1, "UpdatedName");
DeleteEmployee(1);
}
static void CreateEmployee()
{
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var newEmployee = new Employee
{
FirstName = "Iron",
LastName = "Software"
};
session.Save(newEmployee);
transaction.Commit();
Console.WriteLine("Employee created: " + newEmployee.Id);
}
}
static void ReadEmployee(int id)
{
using (var session = sessionFactory.OpenSession())
{
var employee = session.Get<Employee>(id);
Console.WriteLine("Read Employee: " + employee.FirstName + " " + employee.LastName);
}
}
static void UpdateEmployee(int id, string newFirstName)
{
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var employee = session.Get<Employee>(id);
employee.FirstName = newFirstName;
session.Update(employee);
transaction.Commit();
Console.WriteLine("Employee updated: " + employee.FirstName);
}
}
static void DeleteEmployee(int id)
{
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var employee = session.Get<Employee>(id);
session.Delete(employee);
transaction.Commit();
Console.WriteLine("Employee deleted");
}
}
}
NHibernate 的設計旨在提供資料庫的可移植性。 由於其方言配置,NHibernate 能夠以最少的代碼庫更改適應大多數 SQL 數據庫。 這意味著您可以從 SQL Server 切換到 MySQL 或 Oracle,而無需重寫您的數據訪問層。
NHibernate 的 XML 配置文件允許開發人員指定與其數據庫系統相關的 SQL 方言。 這使 NHibernate 成為一個靈活的解決方案,可以輕鬆適應幾乎任何支援 SQL 的關聯式資料庫,確保您的應用程式可以跨不同的資料庫系統移植。
將 NHibernate 整合到IronPDF是一個強大的組合,可以增強您的 .NET 應用程序。 它讓您可以使用 NHibernate 管理資料庫操作,同時利用 IronPDF 來生成 PDF 文件從您的數據中。 考慮一種情況,您的應用程式需要提供特定使用者的文件,例如需要生成並以PDF格式下載的員工報告。 NHibernate C 可以有效管理從您的資料庫檢索資料的過程,而 IronPDF 可以將這些資料轉換為格式良好的 PDF 文件。
首先,確保將 IronPDF 添加到您的專案中。 您可以通過安裝 IronPDF 套件,透過 NuGet 套件管理器來加入它。
Install-Package IronPdf
Install-Package IronPdf
讓我們更深入地探討如何在您的應用程式中實現這一點。 在設定 NHibernate 並從資料庫檢索必要的資料(例如員工詳情)後,您將準備一個 HTML 模板,以呈現 PDF 文件的外觀。 此 HTML 範本可動態填入從 NHibernate 獲取的資料。 例如,如果您正在為一名員工生成報告,模板將包括員工姓名、ID 和其他相關細節的佔位符。
以下是一個詳細的代碼示例,展示了如何使用 NHibernate 獲取數據並使用 IronPDF 將其轉換為 PDF:
using IronPdf;
using NHibernate;
static void CreateEmployeeReport(int employeeId)
{
// Open a session to interact with the database
using (var session = OpenSession())
{
// Retrieve the employee object based on the provided ID
var employee = session.Get<Employee>(employeeId);
// Create an instance of the HtmlToPdf class from IronPDF
var renderer = new ChromePdfRenderer();
// Create the HTML content for the PDF, embedding employee data into the HTML
var htmlTemplate = $@"
<html>
<head>
<title>Employee Report</title>
</head>
<body>
<h1>Employee Details</h1>
<p>Name: {employee.FirstName} {employee.LastName}</p>
<p>ID: {employee.ID}</p>
</body>
</html>";
// Render the HTML string as a PDF document
var pdf = renderer.RenderHtmlAsPdf(htmlTemplate);
// Save the generated PDF to a file
pdf.SaveAs("EmployeeReport.pdf");
}
}
using IronPdf;
using NHibernate;
static void CreateEmployeeReport(int employeeId)
{
// Open a session to interact with the database
using (var session = OpenSession())
{
// Retrieve the employee object based on the provided ID
var employee = session.Get<Employee>(employeeId);
// Create an instance of the HtmlToPdf class from IronPDF
var renderer = new ChromePdfRenderer();
// Create the HTML content for the PDF, embedding employee data into the HTML
var htmlTemplate = $@"
<html>
<head>
<title>Employee Report</title>
</head>
<body>
<h1>Employee Details</h1>
<p>Name: {employee.FirstName} {employee.LastName}</p>
<p>ID: {employee.ID}</p>
</body>
</html>";
// Render the HTML string as a PDF document
var pdf = renderer.RenderHtmlAsPdf(htmlTemplate);
// Save the generated PDF to a file
pdf.SaveAs("EmployeeReport.pdf");
}
}
在這段程式碼中,OpenSession()
是一種初始化 NHibernate 會話的方法,用於獲取員工資料。 IronPDF 的 ChromePdfRenderer
類別會將填充了獲取數據的 HTML 模板轉換為 PDF。 此 PDF 已儲存於本地,但也可以透過網路介面直接串流給用戶。
在本教程中,我們探討了 NHibernate 如何簡化 .NET 應用程式中的資料庫操作,以及其與 IronPDF 的整合如何通過允許生成動態 PDF 文件來增強功能。 NHibernate 提供強大的資料管理工具,而 IronPDF 則提供了一種方便的方法,從填充資料的 HTML 模板中創建專業品質的 PDF。
IronPDF 可用於免費試用,許可證從 $749 開始,為將強大的 PDF 生成集成到您的應用程式中提供了一個具有成本效益的解決方案。 這些工具共同提供了一個完整的解決方案,用於管理數據和生成文檔,非常適合企業級別和小規模項目。