11

Considerando questo esempio come un esempio di base, ho creato l'applicazione ma quando eseguo questa applicazione viene visualizzato il seguente errore.Il ProxyFactoryFactory non è stato configurato

ProxyFactoryFactory non è stato configurato. Inizializza la proprietà 'proxyfactory.factory_class' della sezione di configurazione della sessione di produzione con uno dei provider disponibili di NHibernate.ByteCode. Esempio: NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu Esempio: NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle

Il seguente è il frammento di codice che sto usando.

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();  
    } 
} 

E il mio file app.config sembra

<?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> 

ho LinFu.DynamicProxy.dll invece di linfu.dll. Funzionerà? Se no, allora da dove ottengo questo linfu.dll? Oppure c'è qualche altra soluzione?

+1

duplicati Probabili: http://stackoverflow.com/questions/956281/nhibernate-proxyexception e http://stackoverflow.com/questions/969894/error-using-nhibernate –

+0

C'è anche un bug con il build target http://blog.frozzn.com/2010/03/nhibernatebytecodecastleproxyfactoryfac.html – cgreeno

risposta

13

Supponendo di avere NHibernate 2.1 alpha3, copia LinFu.DynamicProxy.dll e NHibernate.ByteCode.LinFu.dll dal \Required_For_LazyLoading\LinFu al vostro bidone (o riferimenti)

Allora la vostra linea di configurazione dovrebbe funzionare:

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

Per inciso, io preferisco il hibernate-configuration blocco di sezione per la configurazione.

Modifica: ecco le sezioni pertinenti dalla mia configurazione Web se si desidera impostare con hibernate-configuration anziché coppie chiave/valore.

Inoltre, è possibile inserire la parte hibernate-configuration nel proprio file denominato hibernate.cfg.xml. È quindi possibile utilizzare lo xsd nhibernate-configuration.xsd contenuto nel download per convalidare la configurazione.

<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

potresti dirmi qual è la configurazione di ibernazione e da dove otterrò il dll di cui sopra –

+1

Puoi scaricare NHibernate 2.1 Beta1 da http://sourceforge.net/project/downloading.php?group_id=73818&filename=NHibernate-2.1. 0.Beta1-bin.zip & a = 5370114 – Ben

+0

Ho scaricato ancora lo stesso problema –

9

In realtà utilizziamo Castle Proxy e abbiamo il seguente.

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

Dopo di che è solo una questione di fare in modo che tutti i file nella directory di caricamento pigro Castello NHibernate sono nel bidone.

LinFu.DynamicProxy.dll non è sufficiente. È inoltre necessario NHibernate.ByteCode.Linfu.dll (e potenzialmente altri).

+0

puoi farmi sapere la fonte da cui dovrei ottenere questi dll? –

+0

Sono nel download di NHibernate. –

+2

Per essere più specifici, i file si trovano nella cartella Required_For_LazyLoading dopo aver estratto il download di 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> 

Copia LinFu.DynamicProxy.dll e NHibernate.ByteCode.LinFu.dll alla cartella del NHibernate e aggiungere gli stessi file DLL per il riferimento al progetto.

1

Ho ricevuto questo errore dopo aver pubblicato il mio progetto tramite la funzionalità "Pubblica ..." del pulsante destro del mouse di Visual Studio 2008, quando provavo a inviare il nostro progetto MVC/NHibernate al nostro server web.

Si è scoperto ho solo bisogno di impostare le opzioni corrette nella finestra di pubblicare. In particolare, nella sezione "Copia", specificare "Tutti i file nella cartella del progetto di origine", quindi ha iniziato a funzionare."Solo i file necessari per eseguire questa applicazione" non erano abbastanza buoni, forse Visual Studio non era abbastanza intelligente da capire quali DLL erano caricate come pigre?

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

Nessun testo. Markup interrotto. Inviato oltre le risposte di cui sopra. Chapeau – SlapY