2009-06-05 10 views
2

Ich bin neu NHibernate.Ich schreibe die einfache Anwendung, die customer Klasse enthält ID und Name und mit Nhibernate ich das Objekt in der Datenbank speichern. aber ich bekomme die folgendenNHibernate proxyexception

Die ProxyFactoryFactory wurde nicht konfiguriert. Initialisieren Sie die Eigenschaft 'proxyfactory.factory_class' des Konfigurationsabschnitts session-factory mit einem der verfügbaren NHibernate.ByteCode-Provider. Beispiel: <property name='proxyfactory.factory_class'>NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> Beispiel: <property name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>

nach diesen Fehler zu lesen i Referenz NHibernate.ByteCode.Castle meiner application.still hinzugefügt ich erhalte den Fehler .und ich erklärte in cfg.xml

hibernate.cfg. xML-Datei

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> 
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
    <property name="connection.connection_string">Server=(local);Initial Catalog=Customer;User Id=sa;Password=myPassword1</property> 

    </session-factory> 
</hibernate-configuration> 

customer.hbm.xml

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="ConsoleApplication1" assembly="ConsoleApplication1"> 
    <class name="ConsoleApplication1.Customer" table="Customer"> 
    <id name="Id" type="string" length="40"> 
     <generator class="assigned"></generator> 

    </id> 
    <property name="Name" column="Name" type="String" length="40"></property> 

    </class> 

</hibernate-mapping> 

Hauptfunktion

Configuration cfg = new Configuration(); 
cfg.AddAssembly(Assembly.GetCallingAssembly()); 

ISessionFactory factoty = cfg.BuildSessionFactory(); 
ISession session = factoty.OpenSession(); 
ITransaction TRANS = session.BeginTransaction(); 

Customer newCustomer = new Customer(); 
newCustomer.ID = "1"; 
newCustomer.Name = "test"; 

session.Save(newCustomer); 
session.Close(); 

kann mir jemand helfen? danke im voraus

+1

Sie benötigen auch einen Verweis auf Castle.Core.dll und Castle.DynamicProxy2.dll –

+0

Ich habe beide DLLs hinzugefügt, aber immer noch den gleichen Fehler. – user98454

Antwort

0

Gleiches Problem, gleiche Auflösung versucht. Alle referenzierten DLLs sind so eingestellt, dass sie lokal kopiert werden und sich im Projekt befinden. Ich verwende eine Hibernate.cfg.xml-Datei mit Castle als meine Proxy-Factory.

Seltsamerweise tritt dies nur auf, wenn ich eine SessionFactory zum Erstellen meiner Sitzung verwende. Wenn ich zu meinen anderen Testklassen wechsle, in denen ich eine Sitzung über FluentNHibernate.SessionSource (PersistenceModel) instanziiere, erhalte ich diesen Fehler nicht.