C# NHibernate通过单个查询为每个类别获取一个元素
我的新闻课如下:C# NHibernate通过单个查询为每个类别获取一个元素,c#,sql,nhibernate,C#,Sql,Nhibernate,我的新闻课如下: public class News { public virtual int Id { set; get; } public virtual string Title { get; set; } public virtual Category Category { set; get; } public virtual DateTime DateCreated { set; get;} }
public class News
{
public virtual int Id { set; get; }
public virtual string Title { get; set; }
public virtual Category Category { set; get; }
public virtual DateTime DateCreated { set; get;}
}
有类别类
public class Category
{
public virtual int Id { set; get; }
public virtual string Name { set; get;}
}
新闻表由数据填充
我需要的是按DateCreated
排序的每个类别获得一条新闻。好的,我想从分类中得到最新的新闻,但我想得到所有分类的所有新闻
好的,我可以得到所有的分类和每个分类的最后新闻,我很好奇是否有一个有效的方法来做到这一点
有什么想法吗
正确的语法也是什么?在我看来,最干净的方法是向Category类添加一个反向集合(这在技术上是免费的,如果您需要映射方面的帮助,请告诉我):
公共虚拟ICollection新闻项{get;set;}
然后是一个简单的LINQ查询:
var results = from category in session.Query<Category>()
select new
{
category,
LatestNews = category.NewsItems
OrderByDescending(x => x.DateCreated).FirstOrDefault()
};
var results=来自session.Query()中的类别
选择新的
{
类别
LatestNews=category.NewsItems
OrderByDescending(x=>x.DateCreated).FirstOrDefault()
};
在您弄清楚需要什么样的sql查询之后,您可能想从本文开始,我将着手构建NHibernate查询。如果您找到了所需的sql查询,我也会将其发布在这里。如果您说需要将此sql查询转换为Nhibernate查询,您可能会得到更好的响应。
var results = from category in session.Query<Category>()
select new
{
category,
LatestNews = category.NewsItems
OrderByDescending(x => x.DateCreated).FirstOrDefault()
};