我在使用 Linq to nHibernate 时遇到了一些非常奇怪的行为。我可以检索我想要的所有对象,并且可以添加 where 子句。
但在一个非常具体的情况下,我得到以下异常:
无法加载类型 x.Foo.Bar.Bars。可能的原因:程序集未加载或未指定。
x.Foo.Bar.Bars
是 where 子句中一段 lambda 表达式的一部分。
其中 Bars 是对象的集合。当我在没有 where 子句的情况下进行查询时,集合会被完美填充。
query.Where(x => x.Foo.Bar.Bars.Any(b => b.Name == "BarName"));
堆栈跟踪是这样的:
在 NHibernate.Util.ReflectHelper.ClassForFullName(字符串类全名)
是的,我的映射文件是嵌入式资源。
部分映射:
<bag name ="Bars" inverse="true" lazy="false"
cascade="none" optimistic-lock="false"
access="Framework.NHibernate.Properties.EntityCollectionAccessor, Assembly">
<key column="BagId" />
<one-to-many class="Bar"/>
</bag>