簡體   English   中英

無法加載類型'NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu'

[英]Unable to load type 'NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu'

我正在嘗試通過“ 你的第一個基於NHibernate的應用程序 ”來獲取其他類型的ORM(我習慣使用DevExpress'XPO)並且我知道tut使用的版本和最新的可用版本。

當我嘗試運行can_add_new_product測試時,我得到了標題這個問題的錯誤。

  1. 我添加了對NHibernate.ByteCode.LinFu的引用(CopyLocal = true)
  2. 我將屬性添加到我的hibernate.cfg.xml中(為了便於閱讀,間隔為多行):

    NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu

我確保我在x86中運行構建。

我還能做些什么來解決這個問題?

節點中的完整語法應如下所示:

<property name="proxyfactory.factory_class">
   NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu
</property>

你能證實這是你的整篇文章嗎? 還要確保使用您的DLL,您有以下內容:

LinFu.DynamicProxy.dll
NHibernate.ByteCode.LinFu.dll

希望這可以幫助。 我使用它來進行延遲加載,並且它與2.1.0GA分支一起成功運行(即使我們的分支有一些來自主干的后向移植修復(SqlServerCE問題)

更新1

好的,在我的項目中,我引用了以下程序集:

  • Antlr3.Runtime.dll
  • Iesi.Collections.dll
  • LinFu.DynamicProxy.dll
  • log4net.dll
  • NHibernate.byteCode.LinFu.dll
  • NHibernate.dll

你還可以發布你的完整的hibernate.cfg.xml,NHibernate配置文件嗎?

更新2

你啟用了log4net輸出嗎? 我發現最簡單的方法是從代碼中獲取。 嘗試在代碼中執行類似的操作,以便獲得一些高級日志記錄:

FileAppender appender = new FileAppender();

appender.File = "nhibernate.log";
appender.LockingModel = new FileAppender.MinimalLock();
appender.ImmediateFlush = true;

pattern = "%timestamp, %thread, %level, %logger, %ndc,%message %newline";
PatternLayout pl = new PatternLayout(pattern);

appender.Layout = pl;
appender.ActivateOptions();
appender.Threshold = log4net.Core.Level.Verbose;

log4net.Config.BasicConfigurator.Configure(appender);

通過此輸出,我們可以進一步找出問題的原因。

很高興獲得您項目的副本,以便我可以調查並幫助您找到錯誤的原因。

更新3

好的,我按照教程,這些是我的筆記,我能夠得到一個運行的例子直到更新實現:

  • 在FirstSolution / Domain / Product.cs中添加了虛擬子句
  • 將LinFu.DynamicProxy和NHibernate.ByteCode.LinFu程序集添加到FirstSolution文件
  • 將NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu添加到配置文件中
  • 更改了新的SchemaExport(cfg).Execute(false,true,false,false); 到新的SchemaExport(cfg).Execute(false,true,false);

將App.Config(應用程序配置文件)添加到您的TEST項目,並將以下內容粘貼到其中:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>

    <property name="connection.connection_string">ADD CON STRING</property>

    <property name="connection.isolation">ReadCommitted</property>
    <property name="default_schema">dbo</property>
    <property name="show_sql">true</property>
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>



    <property name="cache.use_second_level_cache">false</property>
    <property name="cache.use_query_cache">false</property>
    <!-- HBM Mapping Files -->
    <mapping assembly="Namespace.Assembly"/>
  </session-factory>
</hibernate-configuration>

更改Mapping Assembly行並添加連接字符串。 App.Config需要位於正在運行的文件中 - 即。 測試程序集,而不是域程序集。

對於基本的NHibernate測試項目並不重要,但通常認為城堡字節碼實現更好。

LinFu.DynamicProxy和Castle.DynamicProxy之間有什么區別?

您是否嘗試啟用Fusion日志 有時他們非常有幫助

我使用城堡代理而不是林福,但即使我有類似的錯誤。 對我來說問題是,由於代理類是動態加載的,因此Visual Studio不會將所有依賴項正確復制到bin目錄或bin \\ debug目錄。 檢查構建輸出目錄,如果以下文件不存在,請復制它們然后進行測試

LinFu.DynamicProxy.dll NHibernate.ByteCode.LinFu.dll

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM