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