11

Учитывая этот пример в качестве базового примера, я создал приложение, но когда я запускаю это приложение, я получаю следующую ошибку.ProxyFactoryFactory не был настроен

Узел ProxyFactoryFactory не настроен. Инициализировать свойство proxyfactory.factory_class в разделе конфигурации фабрики сеансов с одним из доступных поставщиков NHibernate.ByteCode. Пример: NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu Пример: NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle

Ниже приведен фрагмент кода, я использую.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using NHibernate; 
using NHibernate.Cfg; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Configuration cfg = new Configuration(); 
     cfg.AddAssembly("NHibernate"); 

     ISessionFactory factory = cfg.BuildSessionFactory(); 
     ISession session = factory.OpenSession(); 
     ITransaction transaction = session.BeginTransaction(); 
     User newUser = new User(); 
     newUser.Id = "joe_cool"; 
     newUser.UserName = "Joseph Cool"; 
     newUser.Password = "abc123"; 
     newUser.EmailAddress = "[email protected]"; 
     newUser.LastLogon = DateTime.Now; 

     // Tell NHibernate that this object should be saved 
     session.Save(newUser); 

     // commit all of the changes to the DB and close the ISession 
     transaction.Commit(); 
     session.Close();  
    } 
} 

И мой app.config файл выглядит

<?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
     <configSections> 
     <section 
      name="nhibernate" 
      type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
     /> 
     </configSections> 

     <nhibernate> 
     <add 
      key="hibernate.connection.provider" 
      value="NHibernate.Connection.DriverConnectionProvider" 
     /> 
     <add 
      key="hibernate.dialect" 
      value="NHibernate.Dialect.MsSql2000Dialect" 
     /> 
     <add 
      key="hibernate.connection.driver_class" 
      value="NHibernate.Driver.SqlClientDriver" 
     /> 
     <add 
      key="hibernate.connection.connection_string" 
      value="Server=localhost;initial catalog=nhibernate;Integrated Security=SSPI" 
     /> 
     <!--<add value="nhibernate.bytecode.castle.proxyfactoryfactory, nhibernate.bytecode.castle" key="proxyfactory.factory_class" />--> 
     <!--<property name="proxyfactory.factory_class">NHibernate.ByteCode.Linfu.ProxyFactoryFactory, NHibernate.ByteCode.Linfu</property>--> 
<!-- I have tried both the lines but still getting the same error --> 
     </nhibernate> 
    </configuration> 

LinFu.DynamicProxy.dll У меня есть вместо linfu.dll. Это будет работать? Если нет, то откуда я могу получить это linfu.dll? Или есть ли другое решение?

+1

Вероятные дубликатами: http://stackoverflow.com/questions/956281/nhibernate-proxyexception и http://stackoverflow.com/questions/969894/error-using-nhibernate –

+0

Существует также ошибка с build target http://blog.frozzn.com/2010/03/nhibernatebytecodecastleproxyfactoryfac.html – cgreeno

ответ

13

Если у вас есть NHibernate 2.1 Alpha3, копия LinFu.DynamicProxy.dll и NHibernate.ByteCode.LinFu.dll от \Required_For_LazyLoading\LinFu к вашему бункером (или ссылки)

Тогда ваша конфигурация должна работать:

<add key="proxyfactory.factory_class" value="NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu" /> 

Как и в сторону, я предпочитаю hibernate-configuration блочный блок для конфигурации.

Редактировать: Вот соответствующие разделы моей веб-конфигурации, если вы хотите установить с помощью hibernate-configuration вместо пар ключ/значение.

Кроме того, можно просто положить hibernate-configuration в свой файл под названием hibernate.cfg.xml. Затем вы можете использовать xsd nhibernate-configuration.xsd, который находится в загрузке, для проверки вашей конфигурации.

<configSections> 
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/> 
</configSections> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
     <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> 
     <property name="default_schema">kennelfinder.dbo</property> 
     <property name="connection.provider"> 
      NHibernate.Connection.DriverConnectionProvider 
     </property> 
     <property name="proxyfactory.factory_class"> 
      NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu 
     </property> 
     <property name="connection.connection_string">{Your connection string}</property> 
     <property name="show_sql">false</property> 
     <property name="connection.driver_class"> 
      NHibernate.Driver.SqlClientDriver 
     </property> 
     <property name="connection.isolation">ReadCommitted</property> 
     <property name="use_proxy_validator">true</property> 
     <mapping assembly="KennelFinder"/> 
    </session-factory> 
</hibernate-configuration> 
+0

не могли бы вы рассказать мне, что такое конфигурация спящего режима и откуда я получу вышеуказанную dll? –

+1

Вы можете скачать NHibernate 2.1 Beta1 из http://sourceforge.net/project/downloading.php?group_id=73818&filename=NHibernate-2.1. 0.Beta1-bin.zip & a = 5370114 – Ben

+0

Я загрузил его по-прежнему той же проблемой –

9

Мы фактически используем прокси-сервер Castle и имеем следующее.

<property name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 

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

LinFu.DynamicProxy.dll не достаточно. Вам также нужны NHibernate.ByteCode.Linfu.dll (и, возможно, другие).

+0

можете ли вы сообщить мне источник, откуда я должен получить эти dll –

+0

Они находятся в загрузке NHibernate. –

+2

Чтобы быть более конкретным, файлы находятся в папке Required_For_LazyLoading после извлечения загрузки NHibernate. – kimsk

1
<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
     <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/> 
    </configSections> 
    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
     <session-factory> 
      <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> 
      <property name="connection.provider"> NHibernate.Connection.DriverConnectionProvider </property> 
      <property name="proxyfactory.factory_class"> NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu </property> 
      <property name="connection.connection_string">Server=(local);database=HelloNHibernate;Integrated Security=SSPI;</property> 
      <property name="show_sql">false</property> 
      <property name="connection.driver_class"> NHibernate.Driver.SqlClientDriver </property> 
      <property name="connection.isolation">ReadCommitted</property> 
      <property name="use_proxy_validator">true</property> 
     </session-factory> 
    </hibernate-configuration> 
</configuration> 

LinFu.DynamicProxy.dll Копирование и NHibernate.ByteCode.LinFu.dll в папку NHibernate и добавить те же DLL файлы ссылки проекта.

1

Я получил эту ошибку после публикации моего проекта с помощью функции «Опубликовать ...» Visual Studio 2008, когда вы пытаетесь протолкнуть наш проект MVC/NHibernate на наш веб-сервер.

Оказалось, мне просто нужно установить правильные параметры в диалоговом окне публикации. В частности, в разделе «Копировать» укажите «Все файлы в папке исходного проекта», а затем он начал работать.«Только файлы, необходимые для запуска этого приложения», недостаточно хороши, возможно, Visual Studio недостаточно умен, чтобы выяснить, какие DLL-файлы были ленивы загружены?

-2
rnate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> 
<property name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
+0

Текст отсутствует. Сломанная разметка. Отправленный выше ответов выше. Вводная – SlapY