0

我有 2 个表:Parent 和 Child,它们具有以下关系:Parent 有很多 Childs。

public class Parent
{
    public  DateTime Timestamp;
    public  IList<Child> Child;
}
public Child
{
    public string Name;
}

我想同时选择父级和子级,按时间戳排序,并且只获取索引 x 到 y 之间的行。

public IList<Parent> Get(DateTime from, DateTime to, int startRow, int count)
{
    QueryOver<Parent>().Where(row => row.Timestamp >= from)
    .And(row => row.Timestamp <= to).OrderBy(row => row.Timestamp).Asc.List();
}

我不知道如何只获取所需的行。

我应该用 QueryOver 来做吗?还是在 HQL 中做得更好?

谢谢

4

1 回答 1

0

我改变了关系,而不是父母和孩子,我只使用一张桌子:

public class Info
{
    public  DateTime Timestamp;
    public string Name;
}

为了获取日期之间的所有记录,对它们进行排序并将它们从索引 startRow 到 startRow + count 我使用了以下内容:

public IList<Info> GetInfo (DateTime fromDate, DateTime toDate, int startRow, int count)
{
    IList<Info> result = 
    QueryOver<Info>()
    .Where(row => row.Timestamp >= fromDate)
    .And(row => row.Timestamp <= toDate)
    .OrderBy(row => row.Timestamp).Asc
    .Skip(startRow).Take(count).List();
    return result;
}

生成的 SQL 是:

SELECT * FROM Info WHERE timestamp >= :fromDate AND timestamp <= :toDate 
ORDER BY timestamp ASC OFFSET :startRow ROWS FETCH NEXT :count ROWS ONLY
于 2013-04-21T09:10:50.273 回答