如何从不同的表中获取相同的列

时间:2012-03-27 14:40:43

标签: nhibernate

我有3张桌子

  

任务(Id,text,Contact_Id)
  用户(ID,姓名)
  公司(ID,姓名)

和2个联结表

  

task_users(task_id,user_id)
  task_companies(task_id,company_id)

注意:contact_id可能是指用户表或公司

如何在一个标准中获得task id, task text, contact name

1 个答案:

答案 0 :(得分:0)

这是QueryOver的例子,但它几乎像ICriteria。

Contact contact = null;
mappingSession.QueryOver<Task>()
   .JoinAlias(() => task.Contact, () => contact)
   .SelectList(list => list
     .SelectGroup(task => task.Id)
     .Select(task => task.Text)
     .Select(() => contact.Name))
   .TransformUsing(Transformers.DistinctRootEntity)
   .List();

其他是映射。您可以使基本实体“联系”并从用户和公司扩展。