2017-05-09 4 views
5

明示的にWhereクエリをEntity Frameworkキャッシュで実行できますか?私はFindを使用して、エンティティの主キーに基づいてキャッシュ内のエンティティを探すことができることを知っています。クエリEntitiy Frameworkキャッシュ

コードサンプル:

var person = new PersonToStoreInDb() { Id = 1, Name = "John" }; 
dbSet.Add(person); 
// Perform some other code 
... 
// DbContext.SaveChanges was NOT called! 
var personFromDbSet = bSet.Where(p => p.Name == "John").First(); 
// personFromDbSet is null because it was not sent towards DB via SaveChanges 
+4

'bSet.Local' – grek40

+3

' DbSet.Local'のドキュメントを利用したいと思うかもしれません:https://msdn.microsoft.com/en-us/library/gg696248(v=vs.113).aspx –

+0

@ grek40](http://stackoverflow.com/users/5265292/grek40):あなたのコメント 'DbSet.Local'は、仕事をしてくれてありがとう。あなたのコメントを回答として投稿してください! – Moerwald

答えて

4

Entity FrameworkのはDbSet.Localにキャッシュされたデータを管理します。それは観測可能なコレクションであり、WhereのようなLinqクエリをそれに適用することができます。ロードされたエントリと、SaveChangesが呼び出されるまでaddedremovedのような異なる状態のエントリが含まれます。

関連する問題