2

以下のFindBy関数とFindByExp関数の基本的なメカニズムについて少し混乱しています。FindyByExpがデータベース側で述語を実行することを理解しています。しかし、FindBy関数はどうですか?データベースからすべてのオブジェクトを取得し、最初にそれらをメモリにロードしてから、述語を実行しますか?

    public IQueryable<T> FindBy(Func<T, bool> predicate)
    {
        return context.Get<T>().Where(predicate).AsQueryable<T>();
    }

    public IQueryable<T> FindByExp(Expression<Func<T, bool>> predicate)
    {
        return context.Get<T>().Where(predicate).AsQueryable<T>();
    }
4

1 に答える 1

5

FindBy結果を列挙するときに、データベースからすべての オブジェクトを取得し、プログラムのメモリでそれらをフィルタリングします。T

FindByExpデータベースサーバーで実行されるクエリを変更し、where句を追加します。

于 2012-09-19T15:23:54.470 に答える