Visual studio 2008 无法加载类型';NHibernate.ByteCode.LinFu.proxyFactory,NHibernate.ByteCode.LinFu';
我正试图通过“”了解其他类型的ORM(我习惯于开发XPress的XPO),我知道tut使用的版本与最新可用版本之间存在差异 当我尝试运行can_add_new_产品测试时,我得到了一个错误,该错误命名为这个问题Visual studio 2008 无法加载类型';NHibernate.ByteCode.LinFu.proxyFactory,NHibernate.ByteCode.LinFu';,visual-studio-2008,nhibernate,Visual Studio 2008,Nhibernate,我正试图通过“”了解其他类型的ORM(我习惯于开发XPress的XPO),我知道tut使用的版本与最新可用版本之间存在差异 当我尝试运行can_add_new_产品测试时,我得到了一个错误,该错误命名为这个问题 我添加了对NHibernate.ByteCode.LinFu的引用(CopyLocal=true) 我将该属性添加到hibernate.cfg.xml中,如下所示(为便于阅读,将其分隔为多行): NHibernate.ByteCode.LinFu.ProxyFactoryFactory
我还可以做些什么来解决这个问题?节点中的完整语法应该如下所示:
<property name="proxyfactory.factory_class">
NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu
</property>
希望这有帮助。我将其用于延迟加载,它成功地与2.1.0GA分支一起工作(尽管我们的分支有一些来自主干的后端口修复(SqlServerCE问题)
更新1
好的,在我的项目中,我引用了以下程序集:
Antlr3.Runtime.dll
Iesi.Collections.dll
LinFu.DynamicProxy.dll
log4net.dll
NHibernate.byteCode.LinFu.dll
NHibernate.dll
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中添加了virtual子句
- 将LinFu.DynamicProxy和NHibernate.ByteCode.LinFu程序集添加到FirstSolution文件
- 将NHibernate.ByteCode.LinFu.proxyFactory、NHibernate.ByteCode.LinFu添加到配置文件中
- 更改了新SchemaExport(cfg).Execute(false,true,false,false);更改为新SchemaExport(cfg).Execute(false,true,false)
<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>
NHibernate.dialogue.mssql2008dialogue
NHibernate.Connection.DriverConnectionProvider
NHibernate.Driver.SqlClientDriver
添加CON字符串
重新提交
dbo
真的
NHibernate.ByteCode.Castle.proxyFactory,NHibernate.ByteCode.Castle
假的
假的
更改映射汇编行并添加连接字符串。App.Config需要位于正在运行的文件中-即测试程序集,而不是域程序集
这对于基本的NHibernate测试项目并不重要,但通常认为castle字节码实现更好
我可以验证是否有相同的程序集。最初我只引用了字节码程序集,但引用它们都不会改变任何事情。仍然没有任何变化。结果证明我引用了错误项目中的程序集。我没有在测试项目中引用linfu程序集(我在原始项目中这样做)。谢谢你的帮助。啊哈!至少我们找到了问题所在。很高兴我能提供帮助。我将只做本教程,看看是否出现相同的错误。你能确认你正在使用2.1.0GA吗?
<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>