Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 无法加载类型';NHibernate.ByteCode.LinFu.proxyFactory,NHibernate.ByteCode.LinFu';_Visual Studio 2008_Nhibernate - Fatal编程技术网

Visual studio 2008 无法加载类型';NHibernate.ByteCode.LinFu.proxyFactory,NHibernate.ByteCode.LinFu';

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

我正试图通过“”了解其他类型的ORM(我习惯于开发XPress的XPO),我知道tut使用的版本与最新可用版本之间存在差异

当我尝试运行can_add_new_产品测试时,我得到了一个错误,该错误命名为这个问题

  • 我添加了对NHibernate.ByteCode.LinFu的引用(CopyLocal=true)
  • 我将该属性添加到hibernate.cfg.xml中,如下所示(为便于阅读,将其分隔为多行):

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

  • 我确保我在x86中运行构建


    我还可以做些什么来解决这个问题?

    节点中的完整语法应该如下所示:

    <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
    您还可以发布完整的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中添加了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)

    您尝试过吗?有时它们非常有用

    我使用Castle代理而不是linfu,但我也遇到了类似的错误。问题是,由于代理类是动态加载的,Visual Studio无法将所有依赖项正确复制到bin dir或bin\debug dir。如果出现以下情况,请检查生成输出目录:文件不存在,请复制它们,然后进行测试

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

    将App.Config(应用程序配置文件)添加到测试项目中,然后将以下内容粘贴到其中:

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