どのように私はNHibernateはQueryOver APIを使用して行数を得るのですか?

StackOverflow https://stackoverflow.com/questions/2489548

  •  21-09-2019
  •  | 
  •  

質問

私はNHibernateは3.xのの一部であるQueryOver APIを使用しています私は、行数を取得したいと思いますが、私が使用している方法は、すべてのオブジェクトを返し、その後、コレクションの数を取得します。ちょうど行数の整数/ long値を返す方法はありますか?

私は現在使用しています:

_session.QueryOver<MyObject>().Future().Count()
役に立ちましたか?

解決

APIで遊んでのビットの後、これはそれを行います。

_session.QueryOver<MyObject>()
    .Select(Projections.RowCount())
    .FutureValue<int>()
    .Value

あなたは将来としてそれを返すようにしたくない場合は、あなただけの代わりにSingleOrDefault<int>()を取得することができます。

他のヒント

別の方法

var count = Session.QueryOver<Employer>()
    .Where(x => x.EmployerIsActive)
    .RowCount();

別の方法:

int employerCount = session
  .QueryOver<Employer>()
  .Where(x => x.EmployerIsActive) // some condition if needed
  .Select(Projections.Count<Employer>(x => x.EmployerId))
  .SingleOrDefault<int>();

イムは次のように使用します:

public int QuantidadeTitulosEmAtraso(Sacado s)
    {
        TituloDesconto titulo = null;
        Sacado sacado = null;

        var titulos =
                _session
                .QueryOver<TituloDesconto>(() => titulo)
                .JoinAlias(() => titulo.Sacado, () => sacado)
                .Where(() => sacado.Id == s.Id)
                .Where(() => titulo.Vencimento <= DateTime.Today)
                .RowCount();

    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top