Я хочу быть гибким даже после развертывания кода, поэтому мне нравится использовать файл hibernate.cfg.xml для настройки NHibernate. Теперь я планирую использовать Fluent NHibernate для выполнения всех моих сопоставлений Class => Table. Есть ли способ использовать старый класс конфигурации NHibernate для настройки Fluent NHibernate?
Как я могу использовать класс конфигурации NHibernate с Fluent NHibernate
Ответы (2)
Да, если вы используете fluent configuration API, метод Configure
имеет перегрузку, которая требует существующего NHibernate Configuration
, который можно построить из вашего hibernate.cfg.xml.
Хорошо, это, очевидно, была моя вина. Я попытался передать объект 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>