2011-09-29 49 views
1

我有ObjectContext和實體,我們稱之爲設備。 實體的實體鍵不是自動生成的,並且在添加到上下文期間被指定。 與下面的代碼從對象上下文中讀取新創建的實體

Context.Devices.Add(new Device{Id = someVal, /*initialization*/}); 

我想讀的是實體

var dev = Context.Devices.SingleOrDefault(d => d.Id == someVal); 

和獲取零增加新的實體之後。

當然,在調用SaveChanges()之後,我可以從DB中讀取該設備。

爲什麼我無法從上下文中讀取實體?

回答

2

因爲直到您調用SaveChanges它實際上不存在於數據庫中。您撥打電話Context.Devices.SingleOrDefault(d => d.Id == someVal);正在撥打電話給數據庫。

+0

我期待該實體應該存在於上下文中的對象集中,並且根據上下文進行查詢來返回該實體。而在其他一些情況下,我正在經歷那種行爲 – Gopher

+0

嗯。我會通過調試器檢查Context.Devices集合,以查看剛剛添加的對象是否顯示在那裏...也許使用Find來代替SingleOrDefault可行。 –