我們最近將我們的窗體C#項目從NHibernate 2.0升級到2.1。我們更新了我們的app.config以包含「proxyfactory.factory_class」以指向所選的代理(在我們的例子中爲「NHibernate.ByteCode.Castle」)。升級後,程序按預期構建並運行,沒有問題。我們的問題是試圖打開時在Visual Studio 2008設計器中加載具有參考NHibernate的任何形式的時候,現在給我們以下錯誤(因爲如果我們沒有配置的代理):ProxyFactoryFactory未配置
的ProxyFactoryFactory是不配置 。初始化 'proxyfactory.factory_class'屬性 會話工廠配置 部分與可用的 NHibernate.ByteCode提供程序之一。
堆棧跟蹤:
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
62號線從NHibernateHelper:
static NHibernateHelper()
{
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly("DAL");
sessionFactory = cfg.BuildSessionFactory(); // <-- line 62
}
以下是我們的NHibernate的app.config配置:
<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>
任何人有任何線索如何解決這個問題?謝謝!
NHibernate.ByteCode.Castle.dll(以及其他依賴dll)已被引用。 – 2009-07-31 08:25:55
我們沒有(至少有意)嘗試在設計模式下使用NHibernate。只需在設計器中打開一個表單就可以觸發VS 2008,嘗試初始化與form_load函數(其中之一是NHibernate)關聯的任何對象。您提供的代碼行看起來像是一個可行的選項。我會給出一個答案,並發表如何工作的答覆。 – 2009-07-31 20:34:38
將此視爲黑客。我不確定這是否也會阻止在調試模式下創建SessionFactory。我認爲更好的解決方案是重構你的NHibernateHelper。在Program.cs中初始化SessionFactory怎麼樣? – zoidbeck 2009-07-31 21:20:47