繁体   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