在實體框架(6.1.3)的DbSet
實體集合中,添加新項目時,以後不會從集合返回。這是奇怪的和意外的。以下是一些收集的示例代碼:DbSet:缺少添加項目
dbContext.Entities.ToArray();
// contains 3 entries
dbContext.Entities.Add(new Entity());
dbContext.Entities.ToArray();
// still contains 3 entries
這是怎麼回事?當我在Visual Studio的直接窗口中查詢dbContext.Entities
時,它會說「Local:Count = 4」。爲什麼它會隱藏我的新項目?
更新:如果這個集合沒有做明顯的事情 - 返回之前添加的東西 - 我需要做些什麼呢?它首先被調用時必須返回數據庫中的所有記錄,並且必須在稍後調用時包含所有更改(添加和刪除)。 SaveChanges
僅在用戶編輯完成後調用。之前需要收集!當用戶完成編輯時,SaveChanges
也可能在某個地方被調用,但代碼可能會返回並在稍後再次顯示該視圖。
你嘗試'context.Entities.Find(ID)'? – Andrei
'Entities'只是一個查詢,'ToArray()'將通過從數據庫中提取來實現查詢(並且可能***合併一些本地緩存的結果)。在這種情況下,您的新實體不會在本地緩存以及保存到數據庫,因此完全沒有結果。 – Hopeless
「Local:Count = 4」輸出並不表示它已被緩存?當我添加東西,而他們沒有被緩存,那麼他們將如何得到保存呢?保存工作正常,但我只能在程序重啓後到達那裏。我需要立即購買新產品。 – ygoe