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,那么为什么它构建我的对象是错误的?