首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fluent NHibernate: left join with条件中的Order by

问Fluent NHibernate: left join with条件中的Order by
EN

Stack Overflow用户
提问于 2013-02-24 03:29:31
回答 1查看 372关注 0票数 1

假设映射的类如下:

代码语言:javascript
复制
public class Item
{
  public virtual int Id { get; set; }
  public virtual IEnumerable<History> Histories { get; set; }
}

public class History
{
  public virtual int Id { get; set; }
  public virtual Item Item { get; set; }
  public virtual DateTime Date { get; set; }
  public virtual HistoryType HistoryType { get; set; }
}

public enum HistoryType
{
  A = 1,
  B = 2
}

现在我希望能够获取所有按最新历史日期排序的项目,其中历史记录为HistoryType = A。并不是所有的项目都有历史记录,所以我猜需要一个左连接。

我需要的是一个流利的NHibernate查询,但它也会很高兴看到一个正确的查询。

EN

回答 1

Stack Overflow用户

发布于 2013-02-24 04:10:13

您案例的标准SQL查询将如下所示。是的,你需要一个Left Join来获取所有的项目。

按最新历史记录日期排序的所有项目,其中历史记录为HistoryType = A。即使对于没有历史记录的项目也是如此

代码语言:javascript
复制
SELECT i.id, h.id, h.datetime, h.historytype
FROM ITEMS i
LEFT JOIN HISTORY h
ON i.id = h.itemid
WHERE h.HistoryType = 'A'
ORDER BY h.Datetime DESC

如果您选择显示用户定义的值,而不是null。例如,当一个项目没有历史时,返回的历史表reocrds将为空。因此,像Colasce这样的函数可以帮助您add syntatic sugar to your query :)

请为Fluent NHibernate应用正确的语法(例如,是否对字符串/可变字符列值使用反字符/反逗号)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15044660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档