NHibernate - Конфигурация
В этой главе мы рассмотрим конфигурацию NHibernate. У нас есть разные способы настройки NHibernate. Он делится на две основные группы
- Конфигурация на основе XML
- Конфигурация на основе кода
Конфигурация на основе кода
Конфигурация на основе кода встроена в NHibernate. Он был введен в NHibernate 3, и до сих пор мы использовали конфигурацию баз кода.
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>();
x.LogSqlInConsole = true;
});
cfg.AddAssembly(Assembly.GetExecutingAssembly());
Все конфигурации указаны в коде C #. Вы можете видеть здесь, что у нас есть новый объект конфигурации, а затем мы используемloquacious configurationэто было введено с NHibernate 3.1 для настройки базы данных. Какую строку подключения мы используем, к какой базе данных подключаемся и какой диалект использовать. Мы также добавляем прямо сюда нашу сборку картографии.
Конфигурация на основе XML
Если вы используете конфигурацию на основе XML, вы можете использовать hibernate.cfg.xml файл, который является просто автономным XML-файлом, использующим схему NHibernate, или вы можете встроить эту конкретную конфигурацию NHibernate в свое приложение или web.cfg. По умолчанию используется имя hibernate.cfg.xml, но мы также можем использовать произвольное имя для этого xml-файла.
Давайте посмотрим на конфигурацию на основе XML, добавив новый XML-файл в проект NHibernateDemoApp и назовем его hibernate.cfg.xml.
Введите следующую информацию в файл hibernate.cfg.xml.
<?xml version = "1.0" encoding = "utf-8" ?>
<hibernate-configuration xmlns = "urn:nhibernate-configuration-2.2">
<session-factory>
<property name = "connection.connection_string">
Data Source = asia13797\\sqlexpress;
Initial Catalog = NHibernateDemoDB;
Integrated Security = True;
Connect Timeout = 15;
Encrypt = False;
TrustServerCertificate = False;
ApplicationIntent = ReadWrite;
MultiSubnetFailover = False;
</property>
<property name = "connection.driver_class">
NHibernate.Driver.SqlClientDriver
</property>
<property name = "dialect">
NHibernate.Dialect.MsSql2008Dialect
</property>
<mapping assembly = "NHibernateDemoApp"/>
</session-factory>
</hibernate-configuration>
Как вы можете видеть в приведенном выше XML-файле, мы указали ту же конфигурацию, что и в C #.
Теперь давайте прокомментируем эту конфигурацию из файла Program.cs и просто вызовем Configure() метод, который загрузит hibernate.cfg.xml файл, как показано ниже.
using HibernatingRhinos.Profiler.Appender.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) {
NHibernateProfiler.Initialize();
var cfg = new Configuration();
//cfg.DataBaseIntegration(x =>
//{
// x.ConnectionString = "Data Source = asia13797;\\sqlexpress
Initial Catalog = NHibernateDemoDB;
Integrated Security = True;
Connect Timeout = 15;
Encrypt =False;
TrustServerCertificate = False;
ApplicationIntent = ReadWrite;
MultiSubnetFailover = False";
// x.Driver<SqlClientDriver>();
// x.Dialect<MsSql2008Dialect>();
// x.LogSqlInConsole = true;
//});
//cfg.AddAssembly(Assembly.GetExecutingAssembly());
cfg.Configure();
var sefact = cfg.BuildSessionFactory();
using (var session = sefact.OpenSession()) {
using (var tx = session.BeginTransaction()) {
var students = session.CreateCriteria<Student>().List<Student>();
Console.WriteLine("\nFetch the complete list again\n");
foreach (var student in students) {
Console.WriteLine("{0} \t{1} \t{2} \t{3}", student.ID,
student.FirstName, student.LastName, student.AcademicStanding);
}
tx.Commit();
}
Console.ReadLine();
}
}
}
}
Давайте снова запустим ваше приложение, и вы увидите тот же результат.
Fetch the complete list again
1 Allan Bommer Excellent
2 Jerry Lewis Good