我收到一些非常奇怪的行爲與Linq到nHibernate。 我可以檢索所有我想要的對象,並且可以添加where子句。NHibrenate無法加載類型
但在非常特殊的情況下,我得到以下異常:
未能加載類型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(字符串classFullName)
是的,我的映射文件中嵌入的資源。映射的
部分:
<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>
什麼作爲'classFullName'傳遞給該NHibernate方法?你正在使用哪個版本的NHibernate? – cremor 2013-02-14 12:57:35
nHibernate版本:3.1.0.4000。我認爲classFullName是x.Foo.Bar.Bars。 – 2013-02-14 13:04:09
在最近的幾個版本中,Linq提供者已經有很多修復。如果可以解決問題,您可以嘗試3.3.3.CR1(或者甚至是來自主分支的當前4.0.0.Alpha1)。 – cremor 2013-02-14 13:09:47