0

現在、部分的な信頼の問題のため、アプリケーションから流暢なnhibernateをリッピングするプロセスを進めています。流暢なAPIを使用してEntityFramework5.1RCに移行します。

リポジトリに次のメソッドがありますが、Entity Frameworkを使用して同じクエリを記述できるかどうかを調べようとしていますか?私は明らかにそれが可能な限り効率的であることを探しています。

    public PagedList<Topic> GetRecentTopics(int pageIndex, int pageSize, int amountToTake)
    {
        // Get a delayed row count
        var rowCount = Session.QueryOver<Topic>()
                        .Select(Projections.RowCount())
                        .Cacheable()
                        .FutureValue<int>();

        // Get the topics using an efficient query
        var results = Session.QueryOver<Topic>()                            
                        .OrderBy(x => x.CreateDate).Desc
                        .Skip((pageIndex - 1) * pageSize)
                        .Take(pageSize)
                        .Cacheable()
                        .Future<Topic>().ToList();

        // We might only want to display the top 100
        // but there might not be 100 topics
        var total = rowCount.Value;
        if (total > amountToTake)
        {
            total = amountToTake;
        }

        // Return a paged list
        return new PagedList<Topic>(results, pageIndex, pageSize, total);
    }

ヘルプ/ポインタは大歓迎です。

4

1 に答える 1

2

AFAIK EFには、クエリのバッチ処理はありません。ここを参照してください自分で実装することもできますが、これには注意が必要です。

あるいは、NHを中程度の信頼の下で機能させることができます。ここここに情報があります。

このリンクのコメントには、中程度の信頼の下で動作するNHibernate dllへのリンクがあります(私は自分自身をテストしていません)。

于 2012-07-10T12:13:15.727 に答える