2017-05-09 78 views
5

是否可以在Entity Framework緩存上執行明確的Where查詢?我知道我可以使用Find在緩存中查找實體(基於實體主鍵)。查詢Entitiy框架緩存

代碼示例:

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

實體框架管理在DbSet.Local緩存的數據。這是一個可觀察的集合,並且像Where這樣的Linq查詢可以應用於它。它將包含加載的條目以及不同狀態的條目,如addedremoved,直到調用SaveChanges