Доступные версии документации

Диалект 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=MANAGER
        </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
    
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter