2013-01-14 140 views
0

我有實體類型稱爲'問題',當我創建它的新實例並將其添加到實體集'問題'(使用AddObject()),比上調用SaveChanges()方法,一切正常。但是當我添加它,但沒有調用SaveChanges(),並嘗試執行一些針對'Questions'的linq查詢結果不包含最近添加的'Question'對象時,直到調用SaveChanges()之前,它似乎對linq不可見。這是一種正確的行爲,或者我錯過了什麼?實體框架 - 添加新對象

+0

是您的LINQ查詢在ObjectContext中的同一個實例作爲添加的對象的代碼工作。 –

+0

感謝您的回覆Daniel。上下文實例相同。 – igorGIS

回答

1

我相信這是正確的行爲,特別是如果你指的是實體框架。

這應該能夠得到您所添加前保存更改的對象是IE稱爲一旦你加入他們:

ObjectStateManager.GetObjectStateEntries 

msdn ref

0

爲了簡單起見,我決定不使用LINQ,但使用次數()方法來查看我ADDOBJECT(後有多少問題對象有)

(_context.Questions.ToArray()).Count() 

拿到8

// defaultQuestion object initialization here ... 
_context.Questions.AddObject(defaultQuestion); 
(_context.Questions.ToArray()).Count() 

再次拿到8

+0

如果您在添加新對象後第一次計數和第二次計數時再次獲得8個項目,那麼不應該有9個對象? – Ric

+0

我也期待9項,但它是8 :)謝謝鏈接確實有ObjectStateManager.GetObjectStateEntries()方法時執行我可以看到我的對象在其結果中,但它不是我想要的。爲什麼我需要AddObject,然後再SaveChanges,我想在將它推送到源代碼之前對該對象進行一些驗證。 – igorGIS

+0

可能我需要更改邏輯,在添加對象之前進行驗證,然後保存它 – igorGIS