Диалект NHibernate
Для разработки приложения, использующего диалект NHibernate:
-
запустить Visual Studio и создать проект Console Application. Далее предполагается, что проект называется ConsoleApplication1, если это не так, то в примерах надо заменить ConsoleApplication1 на имя проекта;
-
добавить в проект файлы
LinterClientDriver.cs
иLinterDialect.cs
из дистрибутива СУБД ЛИНТЕР;Примечание
Чтобы получить файлы
LinterClientDriver.cs
иLinterDialect.cs
следует обратиться в раздел Поддержка на сайте ЛИНТЕР. -
добавить ссылку на сборку System.Data.LinterClient;
-
с помощью менеджера пакетов NuGet установить пакет NHibernate;
-
в проект Visual Studio добавить новый файл
hibernate.cfg.xml
; -
для файла
hibernate.cfg.xml
установить свойству Copy to Output Directory значение Copy always; -
ввести в файл
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».
-
в проект Visual Studio добавить новый файл
Auto.cs
; -
в файл
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; } } }
-
в проект Visual Studio добавить новый файл
Auto.hbm.xml
; -
для файла
Auto.hbm.xml
установить свойству Build Action значение Embedded Resource; -
в файл
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 >
-
в файл
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