Как я могу использовать класс конфигурации NHibernate с Fluent NHibernate

Я хочу быть гибким даже после развертывания кода, поэтому мне нравится использовать файл hibernate.cfg.xml для настройки NHibernate. Теперь я планирую использовать Fluent NHibernate для выполнения всех моих сопоставлений Class => Table. Есть ли способ использовать старый класс конфигурации NHibernate для настройки Fluent NHibernate?


person Khaja Minhajuddin    schedule 19.11.2009    source источник


Ответы (2)


Да, если вы используете fluent configuration API, метод Configure имеет перегрузку, которая требует существующего NHibernate Configuration, который можно построить из вашего hibernate.cfg.xml.

person James Gregory    schedule 19.11.2009

Хорошо, это, очевидно, была моя вина. Я попытался передать объект NHibernate Configurtion в метод Fluently.Configure (), но мой код выдавал всевозможные ошибки. Проблема была в версии пользователей NHibernate «Fluent-NHibernate». Я не знал, что атрибут класса фабрики прокси теперь обязателен. Итак, в моем файле hibernate.cfg.xml отсутствовал этот атрибут. Это странно, Fluent NHibernate не дал мне ни малейшего представления об этом. Когда я попытался использовать простой NHibernate, я обнаружил эту проблему. Ниже приведены разные версии моих файлов hibernate.cfg.xml. Надеюсь, это поможет будущим разработчикам.

Первая версия

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect,NHibernate</property>
    <property name="connection.connection_string">Data Source=.\SQLEXPRESS;Initial Catalog=SchoolPilot;Integrated Security=True</property>
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration>

Вторая версия

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect,NHibernate</property>
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
    <property name="connection.connection_string">Data Source=.\SQLEXPRESS;Initial Catalog=SchoolPilot;Integrated Security=True</property>
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration>
person Khaja Minhajuddin    schedule 21.11.2009