2016-07-28 78 views
0

的SaveChanges沒有被反映到數據庫中實體框架 - 的SaveChanges不會反映在數據庫

我有以下代碼

public async Task<int> Post([FromBody] UserEntry userEntry) 
{ 
    UserEntry dbUserEntry; 

    using (DBContext db = new DBContext()) 
    { 
     // update 
     dbUserEntry = this.db.UserEntries 
        .Where(u => u.UserEntryID == userEntry.UserEntryID) 
        .Include(u => u.EntryPlayers.Select(y => y.Player)) 
        .FirstOrDefault(); 

     dbUserEntry.TeamName = userEntry.TeamName; 
     dbUserEntry.EntryPlayers = userEntry.EntryPlayers; 

     //db.Entry(dbUserEntry).State = EntityState.Modified; 
     return db.SaveChanges(); 
    } 

}

我讀的地方,我需要設置狀態到改性但如果我去掉行

//db.Entry(dbUserEntry).State = EntityState.Modified;

我得到的錯誤: -

一個實體對象不能被IEntityChangeTracker的多個實例的引用。

我如何能得到的SaveChanges工作任何想法?

+3

是'this'在'dbUserEntry = this.db.UserEntries'一個錯字?因爲如果不是那麼這就是你的問題。您可能在控制器中定義了另一個上下文。 – SOfanatic

+0

是否啓用AutoDetectChanges? –

+0

謝謝SOfanatic。你是對的。從其他地方複製並粘貼錯誤。謝謝 – David

回答

1

使用查找()方法,而不是FirstOrDefault()

dbUserEntry = this.db.UserEntries 
       .Include(u => u.EntryPlayers.Select(y => y.Player)) 
       .Find(u => u.UserEntryID == userEntry.UserEntryID) 
相關問題