Нужна ли Proxy Factory в NHibernate? - PullRequest
9 голосов
/ 10 июля 2009

У меня есть такая конфигурация в 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</property>
    <property name="connection.connection_string">Data Source=.\SQLEXPRESS;Initial Catalog=MyDB;Integrated Security=SSPI;</property>
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration>

Я только что создал библиотеку классов и создал интеграционный тест с использованием MbUnit. Это не удается. Часть отчета (та, которую мне достаточно ) отправляется сюда:

** NO TESTS WERE RUN (No tests found) **
TestCase 'M:IntegrationTests.RepositoryTests.ListAllPostsReturnsAListOfPost'
failed: The ProxyFactoryFactory was not configured.
Initialize 'proxyfactory.factory_class' property of the session-factory configuration section with one of the available NHibernate.ByteCode providers.

Я прочитал много уроков и не видел этой заводской конфигурации прокси. Указывать ли это действительно необходимо? Если так, как я могу это сделать? Должен ли я ссылаться на какую-то другую библиотеку?

1 Ответ

14 голосов
/ 10 июля 2009

Если вы используете последнюю версию NHibernate (2.1), вы заметите, что mainline для NH больше не зависит от Castle для генерации прокси, так что все эти уроки вы смотрел, вероятно, устарели.

По сути, теперь у вас есть несколько вариантов создания динамических прокси, поэтому вам нужно явно указать, какой генератор прокси вы хотите использовать. Примеры можно найти в этом руководстве по кузнице . Полный список опций приведен здесь здесь .

P.S. если вы хотите, чтобы все было просто, просто используйте Castle , так как все старые версии NHibernate использовали его по умолчанию.

...