2014-09-11 60 views
1

看來實體框架在插入新記錄後並未從數據庫中獲取最後一項。而是附加用於插入的對象作爲結果集的最後一項。因此,最後一項缺少其他項目所具有的所有相關(外鍵對象)信息。實體在插入和丟失子元素後未更新

什麼,我試圖做的是做一個插入和整個表傳遞給由Ajax的post請求

我的代碼在控制器....

public ActionResult save(MOH_area moh) 
    { 
     if (ModelState.IsValid) 
     { 
      db.moh_area.Add(moh); 
      db.SaveChanges(); 
     } 


     List<MOH_area> mohlist = db.moh_area.Where(x => x.moh_stt == 0).ToList(); 
     return PartialView("data_grid",mohlist); 
    } 
+0

看起來好像您可能正在使用共享上下文......如果不這樣做,它可能會導致多個奇怪的問題......您應該使用dbcontext的工作單元或存儲庫模式。 – 2014-09-11 09:53:19

回答

3

製作燒製的局部視圖確定您的「moh」對象沒有爲ID字段設置的值。理想情況下,我會建議創建MOH_area的新對象並複製除身份之外的值。這應該解決問題,因爲我以前使用過這個解決方案。

或者,您可以處理「db」上下文,然後重新加載相同的內容。它可能適合你。

+0

配置和重新創建數據庫上下文解決了這個問題。非常感謝。 但您的第一個解決方案沒有按預期工作。我創建了一個新對象,並按照建議傳遞了值,但結果相同。用於插入的對象包含主鍵的空值。那麼問題是什麼? – 2014-09-11 10:08:14

+0

奇怪,但很高興看到解決方案的工作。只需檢查定義的關係。如果他們是正確的,第一個應該工作。 :) – 2014-09-11 10:10:00

+0

是的。奇怪。它仍然添加新創建的對象作爲最後一個。並且最後一項在自動遞增值插入後立即獲得標識字段。 只是說,如果我在從數據庫獲取數據之前更改了新創建對象的某些屬性,但是在db.savechanges()之後,則最後一項具有更改的值,而db保存了以前的值。 反正目前與您的第二個選項。感謝那。但只是考慮其他方法也... – 2014-09-11 15:32:33