ここで入手可能な Ayende の NHibernate Linq バージョン 2.1.2 を使用しており、NHProf を使用してこのメソッドを使用するクエリを検査する場合:
public IQueryable<T> GetAll()
{
return Session.Linq<T>();
}
暗黙のトランザクションを使用しているという警告が表示されます。問題は、これをリポジトリで使用してデータベース セッションを抽象化していることですが、必要な Linq クエリを実行できるように IQueryable を返す柔軟性が必要です。を公開せずにトランザクションで明示的にラップする方法はありますSession.Linq<T>()
か、またはこの場合は警告を無視する必要がありますか?
もう少し背景。私は次のような方法を使用しています:
var repo = new Repository();
var animals = repo.GetAll<Animal>().Where(x => x.Size > 100);
NoahsArk.LargeAnimals.AddRange(animals);