c# - Nhibernate 映射的内部类和 InternalsVisibleTo

标签 c# nhibernate

我的代理生成器在为内部映射的 Nhibernate 类生成代理时遇到问题。我尝试在 assemblyinfo.cs 中使用 InternalsVisibleTo 将它们添加为可见,但它似乎不起作用。更糟糕的是,我不知道如何判断我是否已经成功地与我想要的代理程序集成为 friend ,因为如果我在 assemblyinfo.cs 中更改代理程序集公钥中的一些数字,就不会抛出任何错误。

错误:

测试方法 TestProject1.UnitTest1.TestMethod1 抛出异常: NHibernate.HibernateException:创建代理实例失败 ---> CaSTLe.DynamicProxy.Generators.GeneratorException:类型不公开,因此无法生成代理。类型:BaseSystemCore.Domain.Lot

堆栈跟踪:

CaSTLe.DynamicProxy.DefaultProxyBuilder.AssertValidType(类型目标) CaSTLe.DynamicProxy.DefaultProxyBuilder.CreateClassProxy(类型 classToProxy,类型 [] additionalInterfacesToProxy,ProxyGenerationOptions 选项) CaSTLe.DynamicProxy.ProxyGenerator.CreateClassProxy(类型 classToProxy,类型 [] additionalInterfacesToProxy,ProxyGenerationOptions 选项,Object [] constructorArguments,IInterceptor [] 拦截器) NHibernate.ByteCode.CaSTLe.ProxyFactory.GetProxy(对象 ID,ISessionImplementor session ) C:\Users\Isaac.G\Desktop\svn.bolinger.ca\Library Projects\NHibernateUtilities\NHibernateUtilities\BaseUnitOfWork.cs 中的 NHibernateUtilities.BaseUnitOfWork.handleException(异常 e):第 871 行 C:\Users\Isaac.G\Desktop\svn.bolinger.ca\Library Projects\NHibernateUtilities\NHibernateUtilities\BaseUnitOfWork.cs 中的 NHibernateUtilities.BaseUnitOfWork.getAllT:第 115 行 C:\Users\Isaac.G\Desktop\svn.bolinger.ca\Library Projects\BaseSystemCore\TestProject1\UnitTest1.cs 中的 TestProject1.UnitTest1.TestMethod1():第 71 行

有没有人曾经让这个工作过?

谢谢

艾萨克

最佳答案

NHibernate 3.2 内置了代理提供程序。我简要地查看了来源,它们似乎使用了这种格式:{0}ProxyAssembly.其中 {0} 是惰性映射类的类型名称。我还没有测试过。尝试将以下内容添加到您的 AssemblyInfo.cs 并将 {0} 替换为您的惰性类名称:

[assembly: InternalsVisibleTo("{0}ProxyAssembly")]

如果你仍然想使用旧版本的 NHibernate,你可以尝试使用这个(对于城堡字节代码提供者):

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

DynamicProxyGenAssembly2 是一个由 CaSTLe 动态生成的临时程序集。它包含派生自映射类(代理)的类。

关于c# - Nhibernate 映射的内部类和 InternalsVisibleTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7151730/

相关文章:

c# - 从在线 SQL Server 获取数据时卡住应用程序

c# - MIDI 入门

nhibernate - 一个实体应该知道它的 DAO 吗?

.net - 如何使用 CaSTLe ActiveRecord/NHibernate 防止在 Flush 上将对象更改写入数据库

c# - 使用 S#arp 架构的 NHibernate 验证本地化

c# - 模块 'System.Data.Linq' Version=4.0.0.0, Culture=neutral, Publickeytoken=b77a5c561934e089' 应该被引用

c# - Azure管理客户端不返回任何资源组

c# - 在回发时,如何检查 Page_Init 事件中哪个控件导致回发

sql-server - SQL异常中的 "[Pre-Login] initialisation=xyz"是什么意思?

nhibernate - 如何使用 NHibernate 调用从多个表返回结果的过程?