すべてのデータアクセスにEntityFrameworkとリポジトリパターンを使用しています。テーブルナビゲーションを使用しているときに、最初のオブジェクトを取得してナビゲーションオブジェクトのフィールドを参照すると、2つのクエリが実行されていることに気付きました。データベースには多くの関係があるため、ナビゲーションプロパティにこの手法を使用すると、パフォーマンスのオーバーヘッドが発生する可能性があります。
私はメソッドを調べましたがInclude(string tableName)
、これは非常にうまく機能します(ジェネリックRPを使用していなかった場合)が、これは1つのテーブル名しか取りません。classs
where fromからtoを変更することで、これを1つのインクルードのリポジトリパターンに複製できましEntityObject
たが、リポジトリパターンを使用して1つのクエリに複数のインクルードを含めるにはどうすればよいですか?
これが私のコードです:
public class GenericRepository<T> : IRepository<T> where T : EntityObject, new()
{
private Entities _Context;
private ObjectSet<T> _ObjectSet;
public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate, string include)
{
// This works OK
return this._ObjectSet.Include(include).Where(predicate);
}
public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate, param string[] include)
{
// This will not work but is what I am trying to do
return this._ObjectSet.Include(include).Where(predicate);
}
}