2016-05-11 2 views
3

私はmongodbを初めて使い、アプリでmongodbを使ってリポジトリパターンを実装しようとしています。私はクエリ、クエリの下に使用してDBときだから私の質問は次のとおりです。IMongoCollection.AsQueryable()は遅延されていますか?

_mongodb.GetCollection<T>(typeof(T).Name.ToLower()).AsQueryable(); 

それがメモリにすべてのレコードをフェッチまたは結果は、私はそれを反復処理するときに、データを取得したり、それにToListメソッドを使用します繰延コレクションですでしょうか?

答えて

2

延期されています。データを要求したり、データを操作したりしない限り、結果はメモリにフェッチされません。たとえば.ToList()または.First()または.Count()のように指定するか、繰り返してください。

EDIT:

それはあなたが簡単なテストでそれを証明することができ、文書化されない可能性がありますにもかかわらず。 mongodbのロギングを有効にして、あなたの質問で言及した行を実行してください。あなたは照会を見るべきではありません。別の行で.ToList()を実行すると、ログにそのクエリが表示されます。

var settings = new MongoClientSettings 
{ 
    ClusterConfigurator = cb => 
    { 
     var textWriter = TextWriter.Synchronized(new StreamWriter("mylogfile.txt")); 
     cb.AddListener(new LogListener(textWriter)); 
    } 
}; 
+0

@Sirrajマンスール:

the official documentationから(例)ロギングを有効にするには、この上でいくつかのリソースを与えることができ、私は何も見つからなかったし、このためのmongoドキュメントはただ一つのライナーで、ないの周りを検索しました遅延した結果について何か言及してください –

+0

@SrinivasRaは私の編集をチェックアウトします。 –

関連する問題