簡體   English   中英

在實體框架中使用DbSet <TEntity> .Local屬性

[英]Using DbSet<TEntity>.Local Property in Entity Framework

MSDN文檔之后,我們可以使用Local屬性直接從上下文獲取本地/緩存數據,而無需對數據源的其他請求:

獲取一個ObservableCollection,它表示此集合中所有已添加,未更改和已修改實體的本地視圖。
(......)
通過使用數據填充集合,此屬性可用於數據綁定,例如,使用Load擴展方法,然后通過此屬性綁定到本地數據。

問題是,代碼不起作用( Local為空):

context.SampleEntities.Select(x => new { x.A, x.B }).Load();
// context.SampleEntities.Local.Count is 0

但在這種情況下,它似乎正常工作:

context.SampleEntities.Load();
// context.SampleEntities.Local.Count is not 0

也許有人可以解釋使用Local屬性的正確方法是什么?
更重要的是,如何將它與部分加載的實體一起使用,如上面的情況?

這是預期的行為。 本地緩存在DbContext對象的生命周期中由您從數據庫加載的實體。 帶查詢:

context.SampleEntities.Select(x => new { x.A, x.B })

你正在加載你的應用程序內存沒有SampleEntity對象,但只有它的proepities A和B.選擇也轉換為sql查詢,以限制從查詢返回的行,從而提高性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM