0

我有一個MVC5 EF6.1應用程序,它在除編輯記錄以外的每個方面都以我想要的方式工作。SQL在更新上添加新記錄

我正在使用視圖模型來處理創建和編輯窗體。視圖模型與實體模型相匹配,但不包含Id,並且它具有用於處理文件上傳的一些額外屬性。

創建記錄完美地工作。編輯表單按照它應該的方式填充字段。在更新時,更改被識別。

問題是,並非更新記錄,反映更改的新記錄被添加到數據庫。應該更新的記錄仍然存在。

我已經嘗試了一切,我可以找到試圖解決這個問題。我嘗試過更新和沒有EntityState。我曾嘗試設置OriginalValues和CurrentValues。我甚至嘗試過使用原始的SQL語句。所有結果都一樣:添加新數據的記錄,原始數據保持不變。

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit(int id, MyViewModel model) 
    { 
     var thisRecord = db.MyEntity.Find(id); 
     //some stuff to update thisRecord properties 
     db.SaveChanges(); 
    } 

這很多工作正常。我可以做些什麼來改變我正在處理的記錄,而不是創建新記錄? 任何幫助將不勝感激。這讓我瘋狂。

回答

0

試試這個:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Edit(int id, MyViewModel model) 
{ 
    var thisRecord = db.MyEntity.Find(id); 
    thisRecord.SomeProperty = newValue; 

    // UPDATE: Try adding this line: 
    _db.Entry(thisRecord).State = EntityState.Modified; 
    db.SaveChanges(); 

    // Whatever other processing you're doing 
} 
+0

謝謝,XIVSolutions,但我沒有嘗試。我也嘗試拿出防僞驗證。同樣的結果。任何其他想法? –

+0

查看上面更新的行。不知道你是否需要這個。如果不這樣做,我建議在調試器中逐步完成並檢查記錄中的值和模型中的值,並更好地瞭解發生的情況。 – XIVSolutions