Nous avons récemment mis à niveau notre projet Windows Forms C# de NHibernate 2.0 à 2.1. Nous avons mis à jour notre app.config pour inclure le "proxyfactory.factory_class" pour désigner le proxy choisi ("NHibernate.ByteCode.Castle" dans notre cas). Après la mise à niveau, le programme se construit et s'exécute comme prévu, sans problème. Notre problème est en essayant d'ouvrir toutes les formes qui ont des références à NHibernate à charge dans le Visual Studio 2008 concepteur, nous donne maintenant l'erreur suivante (comme si nous avions pas configuré le proxy):La ProxyFactoryFactory n'a pas été configurée
Le ProxyFactoryFactory était pas configuré. Initialiser propriété 'proxyfactory.factory_class' de la configuration session-usine avec l'un des fournisseurs NHibernate.ByteCode disponibles.
Trace de la pile:
at NHibernate.Bytecode.AbstractBytecodeProvider.get_ProxyFactoryFactory()
at NHibernate.Cfg.Configuration.Validate()
at NHibernate.Cfg.Configuration.BuildSessionFactory()
at DAL.NHibernateHelper..cctor() in ...\DAL\NHibernateHelper.cs:line 62
Ligne 62 de NHibernateHelper:
static NHibernateHelper()
{
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly("DAL");
sessionFactory = cfg.BuildSessionFactory(); // <-- line 62
}
Voici notre configuration app.config pour NHibernate:
<configuration>
<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="connection.connection_string">Server=ourserver;initial catalog=ourdb;Integrated Security=SSPI</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
</configuration>
quelqu'un a des indices sur comment remédier à ce problème? Merci!
NHibernate.ByteCode.Castle.dll (ainsi que d'autres DLLs dépendantes) ont été référencés. –
Nous n'essayons pas (du moins intentionnellement) d'utiliser NHibernate en mode conception. Ouvrir simplement un formulaire dans le concepteur déclenche VS 2008 pour essayer d'initialiser tous les objets associés à la fonction form_load (dont NHibernate). La ligne de code que vous avez fournie ressemble toutefois à une option viable. Je vais donner un coup de feu et poster une réponse sur comment cela a fonctionné. –
Considérez ceci comme un Hack. Je ne suis pas sûr que cela bloquerait également la création de SessionFactory en mode Debug. Je pense qu'une meilleure solution serait de refactoriser votre NHibernateHelper. Qu'en est-il de l'initialisation de SessionFactory dans Program.cs? – zoidbeck