Диалект NHibernate

Для разработки приложения, использующего диалект NHibernate:

  1. запустить Visual Studio и создать проект Console Application. Далее предполагается, что проект называется ConsoleApplication1, если это не так, то в примерах надо заменить ConsoleApplication1 на имя проекта;

  2. добавить в проект файлы LinterClientDriver.cs и LinterDialect.cs из дистрибутива СУБД ЛИНТЕР;

    Примечание

    Чтобы получить файлы LinterClientDriver.cs и LinterDialect.cs следует обратиться в раздел Поддержка на сайте ЛИНТЕР.

  3. добавить ссылку на сборку System.Data.LinterClient;

  4. с помощью менеджера пакетов NuGet установить пакет NHibernate;

  5. в проект Visual Studio добавить новый файл hibernate.cfg.xml;

  6. для файла hibernate.cfg.xml установить свойству Copy to Output Directory значение Copy always;

  7. ввести в файл hibernate.cfg.xml следующий текст:

    < ?xml version="1.0" encoding="utf-8"? >
    < hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2"  >
      < session-factory >
        < property name="dialect" >
          NHibernate.Dialect.LinterDialect, ConsoleApplication1
        < /property >
        < property name="connection.driver_class" >
          NHibernate.Driver.LinterClientDriver, ConsoleApplication1
        < /property >
        < property name="connection.connection_string" >
          Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8
        < /property >
        < property name="prepare_sql" >true< /property >
      < /session-factory >
    < /hibernate-configuration >
    

    Примечание

    Формат строки соединения connection.connection_string рассмотрен в подпункте «ConnectionString».

  8. в проект Visual Studio добавить новый файл Auto.cs;

  9. в файл Auto.cs ввести следующий текст:

    namespace ConsoleApplication1
    {
      public class Auto
      {
        public virtual int Id { get; set; }
        public virtual string Make { get; set; }
        public virtual string Model { get; set; }
      }
    }
  10. в проект Visual Studio добавить новый файл Auto.hbm.xml;

  11. для файла Auto.hbm.xml установить свойству Build Action значение Embedded Resource;

  12. в файл Auto.hbm.xml ввести следующий текст:

    < ?xml version="1.0" encoding="utf-8" ? >
    < hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                       assembly="ConsoleApplication1"
                       namespace="ConsoleApplication1" >
      < !-- Класс Auto отображается на таблицу SYSTEM.AUTO,
      которая находится в демонстрационной БД -- >
      < class name="Auto" schema="SYSTEM" table="AUTO" >
        < id name="Id" column="PERSONID" / >
        < property name="Make" column="MAKE" / >
        < property name="Model" column="MODEL" / >
      < /class >
    < /hibernate-mapping >
    
  13. в файл Program.cs ввести следующий текст:

    // В примере делается выборка первых 5 записей из таблицы AUTO,
    // которая находится в демонстрационной БД. Полученные данные
    // представляются в виде коллекции объектов типа Auto.
    // C#
    using System;
    using NHibernate.Cfg;
    
    namespace ConsoleApplication1
    {
      class Program
      {
        static void Main(string[] args)
        {
          // Конфигурация NHibernate
          var configuration = new Configuration();
          configuration.Configure();
          configuration.AddAssembly(typeof(Auto).Assembly);
    
          // Создание сессии
          using (var sessionFactory = configuration.BuildSessionFactory())
          {
            // Соединение с ЛИНТЕР-сервером
            using (var session = sessionFactory.OpenSession())
            {
              // Получение первых 5 объектов типа Auto из БД
              var query = session.QueryOver< Auto >().Take(5).List< Auto >();
    
              // Отображение свойств объектов на экране
              foreach (var auto in query)
              {
                Console.WriteLine(auto.Make + " | " + auto.Model);
              }
            }
          }
        }
      }
    }

    Результат выполнения примера:

    FORD                 | MERCURY COMET GT V8
    ALPINE               | A-310
    AMERICAN MOTORS      | MATADOR STATION
    MASERATI             | BORA
    CHRYSLER             | DODGE CORONET CUSTOM