NHibernate - 快速入門



本章我們將學習如何使用NHibernate建立一個簡單的示例。我們將構建一個簡單的控制檯應用程式。要建立控制檯應用程式,我們將使用Visual Studio 2015,它包含建立和測試應用程式所需的所有功能,並使用NHibernate包。

以下是使用Visual Studio中提供的專案模板建立專案步驟。

步驟1 - 開啟Visual Studio,單擊“檔案”→“新建”→“專案”選單選項。

步驟2 - 將開啟“新建專案”對話方塊。

Project Dialog

步驟3 - 從左側窗格中選擇“模板”→“Visual C#”→“Windows”。

步驟4 - 在中間窗格中,選擇“控制檯應用程式”。

步驟5 - 在“名稱”欄位中輸入專案名稱“NHibernateDemoApp”,然後單擊“確定”繼續。

步驟6 - Visual Studio建立專案後,您將在“解決方案資源管理器”視窗中看到許多顯示的檔案。

Project Dialog

正如您所知,我們已經建立了一個簡單的控制檯應用程式專案,現在我們需要將NHibernate包包含到我們的控制檯專案中。

轉到“工具”選單,然後選擇“NuGet包管理器”→“包管理器控制檯”,這將開啟“包管理器控制檯”視窗。

Manager Console Window

指定上面包管理器控制檯視窗中顯示的命令,然後按Enter鍵,它將下載所有NHibernate依賴項並建立對所有必需程式集的引用。安裝完成後,您將看到如下所示的訊息。

NHibernate Demo App

現在我們已經添加了NHibernate,我們可以開始實現。因此,我們將從對映一個名為Student的非常簡單的開始,該表只有一個名為ID的整數主鍵以及FirstName和LastName列。

Add New Item

我們需要一個類來表示這個學生,所以讓我們建立一個名為Student的新類,方法是右鍵單擊解決方案資源管理器中的專案,然後選擇“新增”→“類”,這將開啟“新增新項”對話方塊。

Add New Item NHibernate

在名稱欄位中輸入Student.cs,單擊“新增”按鈕。在這個Student類中,我們需要有一個名為ID的整數主鍵,並且我們需要建立這個字串,FirstNameLastName欄位,如下所示的Student類的完整實現。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks;

namespace NHibernateDemoApp { 
   
   class Student { 
      public virtual int ID { get; set; } 
      public virtual string LastName { get; set; } 
      public virtual string FirstMidName { get; set; } 
   } 
}

在處理NHibernate應用程式中的模型時,最簡單的方法是將所有欄位設為virtual。所以這是我們將使用的簡單的NHibernate模型,並將它對映到後端資料庫。

現在讓我們轉到Program類中的Main方法,並建立一個新的NHibernate配置物件。

我們需要提供的第一個內容是連線字串。這是一個特定於資料庫的連線字串,查詢連線字串最簡單的方法是右鍵單擊SQL Server物件資源管理器中的資料庫,然後選擇“屬性”。

SQL Server Object Explorer

它將開啟“屬性”視窗,現在向下滾動,您將在“屬性”視窗中看到“連線字串”欄位。

Properties Window

複製連線字串並在程式碼中指定。以下是Main方法的實現,我們需要在其中進行NHibernate配置。

using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Driver;

using System;
using System.Linq;
using System.Reflection;

namespace NHibernateDemoApp {

   class Program {
   
      static void Main(string[] args) {
         var cfg = new Configuration();
			
         String Data Source = asia13797\\sqlexpress;
         String Initial Catalog = NHibernateDemoDB;
         String Integrated Security = True;
         String Connect Timeout = 15;
         String Encrypt = False;
         String TrustServerCertificate = False;
         String ApplicationIntent = ReadWrite;
         String MultiSubnetFailover = False;
			
         cfg.DataBaseIntegration(x = > { x.ConnectionString = "Data Source + 
            Initial Catalog + Integrated Security + Connect Timeout + Encrypt +
            TrustServerCertificate + ApplicationIntent + MultiSubnetFailover";
         
                     
            x.Driver<SqlClientDriver>(); 
            x.Dialect<MsSql2008Dialect>();
         });
         
         cfg.AddAssembly(Assembly.GetExecutingAssembly());
         
         var sefact = cfg.BuildSessionFactory(); 
         
         using (var session = sefact.OpenSession()) {
         
            using (var tx = session.BeginTransaction()) {
               //perform database logic 
               tx.Commit();
            }
            
            Console.ReadLine(); 
         } 
      } 
   } 
}

在連線字串之後,我們需要提供一個驅動程式,即SQLClientDriver,然後我們還需要提供一個方言,即SQL Server的版本,我們將使用MS SQL 2008。

NHibernate現在知道如何連線到資料庫。我們還需要做的另一件事是提供我們將對映的模型列表。

我們可以透過新增一個程式集來做到這一點,透過指定Assembly.GetExecutingAssembly,程式將在其中找到對映檔案。對映檔案告訴NHibernate如何將C#類轉換為資料庫表。

SessionFactory編譯了初始化NHibernate所需的所有元資料。SessionFactory可用於構建會話,這大致類似於資料庫連線。因此,在using塊中使用它是一種合適的方法。我可以說var session等於sessionFactory.OpenSession,我想要在它的事務內部執行此操作。

開啟會話後,我們可以告訴會話開始一個新的事務,然後我們可以在其中執行一些邏輯。因此,執行一些資料庫邏輯,最後提交該事務。

廣告
© . All rights reserved.