我为我的映射创建了内部类,并将所有内容放在“default-lazy = false”中。 过了一会儿,我决定完全懒惰并删除此设置。突然间,几乎所有事情都无法执行。我得到的例外是“无法执行查询... System.TypeLoadException:拒绝访问...”。 这当然是因为类被标记为内部,因此nhibernate.dll无法访问它们。这就是为什么我还添加到AssemblyInfo.cs行:
[assembly: InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)]
[assembly: InternalsVisibleTo(InternalsVisible.ToCastleCore)]
[assembly: InternalsVisibleTo("MyUnitTestsDLL")]
但它没有帮助。我做错了什么?
答案 0 :(得分:1)
也许尝试添加:
[assembly: InternalsVisibleTo("NHibernate")]
如果这不起作用,请查看TypeLoadException的堆栈跟踪,并检查抛出异常的DDL - 为其添加InternalsVisibleTo属性。
我的猜测是NHibernate DDL正在尝试做一些更聪明的事情,现在延迟加载已启用..也许它必须由于某种原因访问内部类(模糊但我不知道NHibernate的源代码)
编辑:
尝试添加:
[assembly: InternalsVisibleTo("mscorlib")]
您必须指定正在使用的程序集的公钥/版本。