我正在尝试通过“Your first NHibernate based application”来获取其他类型的ORM(我习惯使用DevExpress'XPO)并且我理解版本之间存在差异tut使用和最新版本。
当我尝试运行can_add_new_product测试时,我收到了标题这个问题的错误。
我将属性添加到我的hibernate.cfg.xml中(为了便于阅读,间隔为多行):
NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu
我确保我在x86中运行构建。
我还能做些什么来解决这个问题?
答案 0 :(得分:7)
节点中的完整语法应如下所示:
<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
好的,我遵循了教程,这些是我的笔记,我能够得到一个运行的例子直到更新实现:
答案 1 :(得分:1)
将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>
更改映射装配线并添加连接字符串。 App.Config需要位于正在运行的文件中 - 即。测试程序集,而不是域程序集。
对于基本的NHibernate测试项目并不重要,但通常认为城堡字节码实现更好。
What are the differences between LinFu.DynamicProxy and Castle.DynamicProxy?
答案 2 :(得分:0)
你试过enabling Fusion logs吗?有时他们非常有帮助
答案 3 :(得分:0)
我使用的是Castle Proxy而不是linfu,但即使我有类似的错误。对我来说问题是,由于代理类是动态加载的,因此Visual Studio不会将所有依赖项正确复制到bin目录或bin \ debug目录。检查构建输出目录,如果不存在以下文件,则复制它们然后测试
LinFu.DynamicProxy.dll NHibernate.ByteCode.LinFu.dll