NHibernate - Bắt đầu

Trong chương này, chúng ta sẽ xem xét cách bắt đầu một ví dụ đơn giản bằng NHibernate. Chúng tôi sẽ xây dựng mộtsimple console application. Để tạo một ứng dụng console, chúng tôi sẽ sử dụng Visual Studio 2015, có chứa tất cả các tính năng bạn cần để tạo, kiểm tra ứng dụng của bạn bằng gói NHibernate.

Sau đây là các bước để tạo một dự án bằng cách sử dụng các mẫu dự án có sẵn trong Visual Studio.

Step 1 - Mở Visual studio và nhấp vào tùy chọn menu File → New → Project.

Step 2 - Một hộp thoại Dự án mới mở ra.

Step 3 - Từ khung bên trái, chọn Mẫu → Visual C # → Windows.

Step 4 - Trong ngăn giữa, chọn Ứng dụng Console.

Step 5 - Nhập tên dự án, 'NHibernateDemoApp', vào trường Tên và nhấp Ok để tiếp tục.

Step 6 - Sau khi dự án được tạo bởi Visual Studio, bạn sẽ thấy một số tệp được hiển thị trong cửa sổ Solution Explorer.

Như bạn biết rằng chúng tôi đã tạo một dự án ứng dụng bảng điều khiển đơn giản, bây giờ chúng tôi cần đưa gói NHibernate vào dự án bảng điều khiển của mình.

Vào menu Tools và chọn NuGet Package Manager → Package Manager Console, nó sẽ mở ra cửa sổ Package Manager Console.

Chỉ định lệnh hiển thị ở trên Package Manager Consolevà nhấn enter, nó sẽ tải xuống tất cả các phụ thuộc NHibernate và tạo các tham chiếu đến tất cả các hợp ngữ được yêu cầu. Sau khi cài đặt xong, bạn sẽ thấy thông báo như trong hình sau.

Bây giờ chúng tôi đã thêm NHibernate, bây giờ chúng tôi có thể bắt đầu triển khai. Vì vậy, chúng tôi sẽ bắt đầu bằng cách lập bản đồ rất đơn giảntable gọi là Student, chỉ có một khóa chính số nguyên được gọi là ID và một cột FirstName và LastName.

Chúng ta cần một lớp đại diện cho sinh viên này, vì vậy hãy tạo một lớp mới có tên là Sinh viên bằng cách nhấp chuột phải vào dự án trong trình khám phá giải pháp và sau đó chọn Thêm → Lớp sẽ mở hộp thoại Thêm Mục mới.

Đi vào Student.cstrong trường tên, hãy nhấp vào nút Thêm. Trong lớp Sinh viên này, chúng ta cần có khóa chính số nguyên được gọi là ID và chúng ta cần tạo chuỗi này,FirstNameLastName các trường như được hiển thị trong phần triển khai hoàn chỉnh sau của lớp Sinh viên.

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; } 
   } 
}

Khi xử lý các mô hình trong ứng dụng NHibernate, việc biến tất cả các trường của bạn thành ảo là điều dễ dàng nhất. Vì vậy, đây là mô hình NHibernate đơn giản của chúng tôi mà chúng tôi sẽ sử dụng và sẽ ánh xạ điều này đến cơ sở dữ liệu phía sau.

Bây giờ chúng ta hãy chuyển đến phương thức Main trong lớp Program và tạo một đối tượng cấu hình NHibernate mới.

Điều đầu tiên mà chúng tôi cần cung cấp là connection string. Đây là một chuỗi kết nối dành riêng cho cơ sở dữ liệu và cách dễ nhất để tìm chuỗi kết nối là nhấp chuột phải vào cơ sở dữ liệu trongSQL Server Object Explorer và chọn Thuộc tính.

Nó sẽ mở Cửa sổ Thuộc tính, bây giờ hãy cuộn xuống và bạn sẽ thấy trường Chuỗi kết nối trong cửa sổ Thuộc tính.

Sao chép chuỗi Kết nối và chỉ định trong mã của bạn. Sau đây là việc thực hiện phương thức Main, trong đó chúng ta cần cấu hình cho 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(); 
         } 
      } 
   } 
}

Sau chuỗi kết nối, chúng ta cần cung cấp một trình điều khiển, đó là SQLClientDriver và sau đó, chúng tôi cũng cần cung cấp cho nó một phương ngữ, phiên bản của SQL Server và chúng tôi sẽ sử dụng MS SQL 2008.

NHibernate hiện biết cách kết nối với cơ sở dữ liệu. Điều khác chúng ta cần làm là cung cấp cho nó một danh sách các mô hình mà chúng ta sẽ lập bản đồ.

Chúng ta có thể làm điều này bằng cách thêm một assembly, do đó, bằng cách chỉ định Assembly.GetExecutingAssemblyvà đây là nơi chương trình sẽ tìm các tệp ánh xạ. Các tệp ánh xạ cho NHibernate biết cách đi từ các lớp C # vào các bảng cơ sở dữ liệu.

SessionFactory biên dịch tất cả siêu dữ liệu cần thiết để khởi tạo NHibernate. SessionFactory có thể được sử dụng để xây dựng các phiên, tương tự như các kết nối cơ sở dữ liệu. Vì vậy, cách thích hợp là sử dụng nó trong khối using. tôi có thể nóivar session bằng sessionFactory.OpenSession và tôi sẽ muốn thực hiện điều này bên trong giao dịch của nó.

Khi phiên được mở, chúng ta có thể yêu cầu phiên bắt đầu một giao dịch mới và sau đó chúng ta có thể thực hiện một số logic tại đây. Vì vậy, thực hiện một số logic cơ sở dữ liệu và cuối cùng cam kết giao dịch đó.