2013-02-14 134 views
1

我收到一些非常奇怪的行爲與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> 
+0

什麼作爲'classFullName'傳遞給該NHibernate方法?你正在使用哪個版本的NHibernate? – cremor 2013-02-14 12:57:35

+0

nHibernate版本:3.1.0.4000。我認爲classFullName是x.Foo.Bar.Bars。 – 2013-02-14 13:04:09

+1

在最近的幾個版本中,Linq提供者已經有很多修復。如果可以解決問題,您可以嘗試3.3.3.CR1(或者甚至是來自主分支的當前4.0.0.Alpha1)。 – cremor 2013-02-14 13:09:47

回答

0

access="Bars, Assembly"看起來是錯誤的。您不想定義在類Bars中實施的訪問策略,是嗎?

+0

對不起,從映射中刪除了很多。請參閱編輯 – 2013-02-14 12:54:45

相關問題