Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Fluent NHibernate:订单依据与条件左连接_C#_Sql_Nhibernate_Fluent Nhibernate_Left Join - Fatal编程技术网

C# Fluent NHibernate:订单依据与条件左连接

C# Fluent NHibernate:订单依据与条件左连接,c#,sql,nhibernate,fluent-nhibernate,left-join,C#,Sql,Nhibernate,Fluent Nhibernate,Left Join,假设以下映射类: 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 v

假设以下映射类:

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
}
公共类项目
{
公共虚拟整数Id{get;set;}
公共虚拟IEnumerable历史记录{get;set;}
}
公共课历史
{
公共虚拟整数Id{get;set;}
公共虚拟项项{get;set;}
公共虚拟日期时间日期{get;set;}
公共虚拟历史类型历史类型{get;set;}
}
公共枚举历史类型
{
A=1,
B=2
}
现在,我希望能够获取按其最新历史日期排序的所有项目,其中历史记录为HistoryType=A。并非所有项目都有历史记录,因此我猜需要左连接


我需要的是对Fluent NHibernate的查询,但如果能看到一个正确的SQL查询,那就太好了。

针对您的案例的标准SQL查询如下所示。是的,您需要一个
左联接
来获取所有项目

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

如果选择显示用户定义的值istead为null。例如,当项目没有历史记录时,返回的历史记录表REOCRD将为空。因此,这样的函数可以帮助您:)


请为
Fluent NHibernate
应用正确的语法(例如,是否对String/varchar列值使用backtics/倒逗号),您案例的标准SQL查询如下所示。是的,您需要一个
左联接
来获取所有项目

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

如果选择显示用户定义的值istead为null。例如,当项目没有历史记录时,返回的历史记录表REOCRD将为空。因此,这样的函数可以帮助您:)

请为
Fluent NHibernate
应用正确的语法(例如,是否对String/varchar列值使用backtics/倒逗号)

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