2
TL; DR版本:代碼構建SessionFactory的下方時,給了我一個「協會引用未映射類」異常。代碼中應該修改什麼來修復它?1對5月和泛型:「協會引用未映射類」
即使Ayende @ Rahien不建議使用映射到泛型類的this 2007 article我仍然有它一展身手。我用他提到的方法。首先一點是是工作:
<class name="Review`1[Person]" table="Review">
<id name="Id" column="ReviewId"><generator class="native" /></id>
<property name="Rating" />
<many-to-one name="Subject" column="PersonId" class="Person" />
</class>
相應的泛型類看起來是這樣的:
public class Review<T> : BaseEntity where T : IReviewable
{
public virtual int Rating { get; set; }
public virtual T Subject { get; set; }
}
這是工作,我可以加載這些Review
實體,並顯示在我的MVC的觀點沒有問題。好的部分是當我在控制器和視圖中使用它時,我的Subject
將具有正確的類型。
但是,當試圖在我的Person類中映射Review項的集合時,事情開始出現故障。下面是我目前使用的映射:
協會引用映射的:這在構建SessionFactory的與異常結束
public class Person : BaseEntity, IReviewable { /* Abbreviated */ public virtual IList<Review<Person>> Reviews { get; set; } }
:
<class name="Person"> <!-- abbreviated --> <bag name="Reviews" table="Review"> <key column="PersonId"/> <one-to-many class="Review`1[Person]" /> <!-- Also tried these: <one-to-many class="table="Review"> ... plus a few variations with fully qualified names ... --> </bag> </class>
有了這個(略)類類:....在這裏插入一對多的類別....
所以這個問題:這裏有什麼問題?這甚至有可能嗎?我應該放棄映射通用實體嗎?
通用類型上的Version/Culture/PublicKeyToken位實際上是關鍵。感謝一羣花時間來提出這個答案! – Jeroen