如何为NHibernate制作内部映射类?

我为我的映射创建了内部类,并将所有内容放在“default-lazy = false”中。 过了一会儿,我决定完全懒惰并删除此设置。 突然间,几乎所有事情都无法执行。 我得到的例外是“无法执行查询… System.TypeLoadException:拒绝访问…”。 这当然是因为类被标记为内部,因此nhibernate.dll无法访问它们。 这就是为什么我还添加到AssemblyInfo.cs行:

[assembly: InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)] [assembly: InternalsVisibleTo(InternalsVisible.ToCastleCore)] [assembly: InternalsVisibleTo("MyUnitTestsDLL")] 

但它没有帮助。 我究竟做错了什么?

也许尝试添加:

 [assembly: InternalsVisibleTo("NHibernate")] 

如果这不起作用,请查看TypeLoadException的堆栈跟踪,并检查抛出exception的DDL – 为其添加InternalsVisibleTo属性。

我的猜测是NHibernate DDL正试图做一些更聪明的事情,现在延迟加载已启用..也许它必须由于某种原因访问内部类(模糊但我不知道源代码NHibernate的)

编辑:

尝试添加:

 [assembly: InternalsVisibleTo("mscorlib")] 

您必须指定正在使用的程序集的公钥/版本。