2011-10-05 151 views
0

我正在使用VS2010 EF4和我有以下代碼:實體框架:ObjectSet.AddObject不添加實體?

MyEntity entity = null; 
entity = MyEntity.CreateMyEntity(0); 
context.MyEntities.AddObject(entity); 
context.AcceptAllChanges(); 
context.SaveChanges(); 

的問題是,ADDOBJECT()不加入的對象添加到集合,我只是想不通爲什麼。當我單步執行代碼時會發生什麼,它會得到第一個屬性「CityId」,它當然是null,然後它似乎只是從那裏返回......就像它有一個與該屬性爲空的問題。我的數據庫(MSSQL)中唯一的非空字段是Id列,它是一個標識列...我很困惑。請幫忙!

在此先感謝!

馬特

+0

什麼是'MyEntity.CreateMyEntity(0);'的代碼嗎?我記得當我使用POCO實體時並沒有使用context.CreateObject ()方法來創建實體時,我遇到了一些問題。此外,請檢查VS中的堆棧窗口是否有可疑的EF方法調用 - 這可以讓您瞭解發生了什麼。再說一次 - 如果EF配置爲POCO/Code-First,而MyEntity.CreateMyEntity()方法做的是什麼。 – Jefim

+0

謝謝你的回覆,傑夫姆。 MyEntity.CreateMyEntity()方法實際上向您顯示需要填充哪些屬性(db中的NOT NULL)。 – Matt

回答

1

您不應該調用接受所有更改方法。

+0

謝謝阿卡什。我無法相信。 AcceptAllChanges()究竟做了什麼?該文檔說:「接受對對象上下文中的對象所做的所有更改。」...在什麼情況下我會調用此方法? – Matt

+0

感染它應該永遠不會被調用,因爲當EF將更改正確保存到數據庫時,EF會調用它。如果你正試圖實現你自己的與數據庫通信的方式,那麼你應該使用它。 –