3
我正在研究一個bug跟蹤應用程序。有門票,每張門票都有開門人用戶和分配的用戶。所以,基本上,我有兩個實體,它們之間有兩個多對一的關係。其原理是這樣的:FluentNHibernate:同一實體之間的多個一對多關係
用戶:
public class User
{
public virtual int Id { get; protected set; }
...
public virtual IList<Ticket> OpenedTickets { get; set; }
public virtual IList<Ticket> AssignedTickets { get; set; }
}
票:
public class Ticket
{
public virtual int Id { get; protected set; }
...
[Required]
public virtual User OpenerUser { get; set; }
public virtual User AssignedUser { get; set; }
}
我用FluentNHibernate的自動映射功能。
問題是,無論我設置的關係,在用戶的側面,兩個集合總是包含相同的數據。我想Fluent無法判斷哪個關係屬於哪個末端。
我搜索了一下,但沒有發現任何有用的東西。
編輯2:
我富爾德出與史蒂夫的幫助下,我要實現自己的IHasManyConvention。我還發現IHasManyConvention中生成的列名必須與我的IReferenceConvention生成的列名相匹配。隨着小調整,我得到它的工作。
我還驚訝地發現,調用方便的ForeignKey.EndsWith("Id")
方法弄亂了整個事情。
雖然史蒂夫的回答本身並不能解決問題,但我非常感謝他指出我正確的方向。
你試過檢查NHibernate在底層做了什麼嗎?我的意思是生成的數據庫模式如何以及在測試期間運行了哪些SQL查詢。 – Steves 2010-05-06 14:35:05
是的,我做到了。它會產生完全無關的列。 – Venemo 2010-05-06 15:15:53
好的,我終於設法解決了它。更新了我的帖子,並非常感謝您指引我朝着正確的方向發展。 – Venemo 2010-05-06 15:26:13