NHibernate - Начало работы

В этой главе мы рассмотрим, как запустить простой пример с использованием NHibernate. Мы будем строитьsimple console application. Для создания консольного приложения мы будем использовать Visual Studio 2015, который содержит все функции, которые вам нужно создать, протестируйте ваше приложение с помощью пакета NHibernate.

Ниже приведены шаги по созданию проекта с использованием шаблонов проектов, доступных в Visual Studio.

Step 1 - Откройте Visual Studio и выберите пункт меню «Файл» → «Создать» → «Проект».

Step 2 - Откроется диалоговое окно нового проекта.

Step 3 - На левой панели выберите «Шаблоны» → «Visual C #» → «Windows».

Step 4 - На средней панели выберите Консольное приложение.

Step 5 - Введите имя проекта «NHibernateDemoApp» в поле «Имя» и нажмите «ОК», чтобы продолжить.

Step 6 - После создания проекта в Visual Studio вы увидите ряд файлов, отображаемых в окне обозревателя решений.

Как вы знаете, мы создали проект простого консольного приложения, теперь нам нужно включить пакет NHibernate в наш консольный проект.

Перейдите в меню Сервис и выберите Диспетчер пакетов NuGet → Консоль диспетчера пакетов, откроется окно консоли диспетчера пакетов.

Укажите команду, показанную выше Package Manager Consoleокна и нажмите Enter, он загрузит все зависимости NHibernate и создаст ссылки на все необходимые сборки. После завершения установки вы увидите сообщение, как показано на следующем изображении.

Теперь, когда мы добавили NHibernate, мы можем приступить к реализации. Итак, мы собираемся начать с отображения очень простогоtable называется Student, который просто имеет целочисленный первичный ключ с именем ID и столбцы FirstName и LastName.

Нам нужен класс для представления этого ученика, поэтому давайте создадим новый класс под названием Student, щелкнув правой кнопкой мыши проект в проводнике решений и затем выбрав Добавить → Класс, который откроет диалоговое окно Добавить новый элемент.

Войти Student.csв поле имени нажмите кнопку Добавить. В этом классе Student нам нужен целочисленный первичный ключ с именем ID, и нам нужно создать эту строку,FirstName и LastName поля, как показано в следующей полной реализации класса 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 проще всего сделать все ваши поля виртуальными. Итак, это наша простая модель NHibernate, которую мы будем использовать и сопоставим с серверной базой данных.

Теперь перейдем к методу Main в классе Program и создадим новый объект конфигурации NHibernate.

Первое, что нам нужно предоставить, это connection string. Это строка подключения для конкретной базы данных, и самый простой способ найти строку подключения - щелкнуть правой кнопкой мыши базу данных вSQL Server Object Explorer и выберите Свойства.

Откроется окно «Свойства». Прокрутите вниз, и вы увидите поле «Строка подключения» в окне «Свойства».

Скопируйте строку подключения и укажите в своем коде. Ниже приведена реализация метода 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 и я хочу сделать это внутри транзакции.

Как только сеанс открыт, мы можем сказать сеансу начать новую транзакцию, и затем мы можем выполнить здесь некоторую логику. Итак, выполните некоторую логику базы данных и, наконец, зафиксируйте эту транзакцию.