0
我想從NHibernate中獲取一個只讀對象的集合,其中所有的屬性來自一個表(Answers
),除了一個來自另一個屬性表(Questions
)以多對一的關係。它是兩個表的事實是我想隱藏的實現細節,所以我希望存儲庫返回一個合理的聚合。麻煩的是,這需要我有兩個類,每個表一個,NHibernate返回,然後我必須選擇/映射到我的存儲庫返回的第三個類。這感覺有點垃圾,所以我希望有一個映射爲我加入兩個表,但將所有列映射到一個類。我的映射是這樣的:NHibernate的流利加入映射多對一的關係
public QuestionAnswerMap()
{
ReadOnly();
Table("Question");
Id(x => x.Id).Column("questionId").GeneratedBy.Identity();
Map(x => x.AnswerShortCode).Column("AnswerShortCode");
Join("Answers", join =>
{
join.Fetch.Join();
join.KeyColumn("questionId").Inverse();
join.Map(x => x.QuestionId).Column("QuestionId");
join.Map(x => x.AnswerId).Column("AnswerId");
join.Map(x => x.MemberId).Column("MemberId");
});
}
這將生成SQL看起來很完美,準確地返回我想要的東西,但是當有加盟的問題表在同一行多個答案,NHibernate的似乎把它們映射到對象錯誤地 - 我得到了正確數量的結果,但所有具有常見問題的答案都與該問題的sql結果中的第一行保持一致。
我這樣做是正確的嗎? NH正在生成正確的SQL,那麼爲什麼它構建我的對象是錯誤的?