我的代理生成器无法为内部映射的Nhibernate类生成代理.我尝试在assemblyinfo.cs中使用InternalsVisibleTo将它们添加为可见但它似乎不起作用.更糟糕的是,我不知道如何判断我是否已成功设法成为我想要的代理程序集的朋友,因为如果我在assemblyinfo.cs中的代理程序集公钥中更改了一些数字,则不会抛出任何错误.
错误:
测试方法TestProject1.UnitTest1.TestMethod1引发异常:NHibernate.HibernateException:创建代理实例失败---> Castle.DynamicProxy.Generators.GeneratorException:类型不公开,因此无法生成代理.键入:BaseSystemCore.Domain.Lot
堆栈跟踪:
Castle.DynamicProxy.DefaultProxyBuilder.AssertValidType(Type target)Castle.DynamicProxy.DefaultProxyBuilder.CreateClassProxy(Type classToProxy,Type [] additionalInterfacesToProxy,ProxyGenerationOptions options)Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy,Type [] additionalInterfacesToProxy,ProxyGenerationOptions options,Object [] constructorArguments,IInterceptor []拦截器)NHibernate.ByteCode.Castle.ProxyFactory.GetProxy(Object id,ISessionImplementor session)NHibernateUtilities.BaseUnitOfWork.handleException(例外e)在C:\ Users\Isaac.G\Desktop\svn.bolinger中. ca\Library Projects\NHibernateUtilities\NHibernateUtilities\BaseUnitOfWork.cs:第871行NHibernateUtilities.BaseUnitOfWork.getAllT在C:\ Users\Isaac.G\Desktop\svn.bolinger.ca\Library Projects\NHibernateUtilities\NHibernateUtilities\BaseUnitOfWork.cs:line 115 C:\ Users\Isaac.G\Desktop\svn.bolinger.ca\Library Projects\BaseSystemCore\TestProject1\UnitTest中的TestProject1.UnitTest1.TestMethod1()1.cs:第71行
有没有人以前有这个工作?
谢谢
艾萨克
NHibernate 3.2内置了代理提供程序.我简要地看看它们的来源似乎使用了这种格式:{0} ProxyAssembly.其中{0}是延迟映射类的类型名称.我没有测试过它.尝试将以下内容添加到AssemblyInfo.cs并将{0}替换为您的惰性类名:
[assembly: InternalsVisibleTo("{0}ProxyAssembly")]
Run Code Online (Sandbox Code Playgroud)
如果您仍想使用旧版本的NHibernate,可以尝试使用它(对于城堡字节代码提供程序):
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
Run Code Online (Sandbox Code Playgroud)
DynamicProxyGenAssembly2是一个由Castle动态生成的临时程序集.它包含从映射类(代理)派生的类.
归档时间: |
|
查看次数: |
1220 次 |
最近记录: |