NHibernate使用Criteria for Count(),First()

5 nhibernate criteria

我有一个关于Criteria方法的问题,与数据库的一对多关系,'one'是" account ",'many'是" sites ",当我使用的CreateCriteria()东西不对时.

像这样: SessionFactory.OpenSession().CreateCriteria(typeof(Account)).List().Count();

在它运行之前,我认为SQL应该是SELECT COUNT(*) FROM table,但SQL是SELECT id, siteurl...FROM table.那有什么不对呢?我该如何解决?

First()方法应该是SELECT TOP1 ...FROM table,但它是SELECT ...FROM table

我是Nhiberate新秀,请帮助我.

Dar*_*rov 12

发生这种情况是因为最后Count调用的方法在查询运行之后和数据库之外执行.您只计算内存中列表中的元素.要实现您所寻找的目标,您可以使用投影:

var count = session
    .CreateCriteria<Account>()
    .SetProjection(
        Projections.Count(Projections.Id())
    )
    .UniqueResult<long>();
Run Code Online (Sandbox Code Playgroud)