我想附加一個從未從數據庫'拉'的實體,並讓它更新現有的行。例如,我在MVC(修改)中傳遞了一個完整的模型,並且我只是試圖保存它而不用往返獲取實體,然後編輯,因爲我已經有了來自之前調用的信息。EF5我可以附加一個從未從Db查詢過的實體嗎?
什麼我是這樣的:
public static int ModifyExistingEntity<T>(this DbContext db, T updated) where T : class
{
DbSet<T> set = db.Set<T>();
set.Attach(updated);
db.Entry(updated).State = EntityState.Modified;
return db.SaveChanges();
}
但是當我運行它,我得到這個:
System.Data.Entity.Infrastructure.DbUpdateConcurrencyException:商店 更新,插入或刪除語句影響行數(0)的意外數量 。實體可能已被修改或刪除,因爲實體 已加載。刷新ObjectStateManager條目。 ---> System.Data.OptimisticConcurrencyException:存儲更新,插入或 刪除語句影響了意外數量的行(0)。自實體被加載後,實體 可能已被修改或刪除。刷新 ObjectStateManager條目。
這意味着什麼都沒有更新。我在這裏錯過了什麼?主鍵設置正確,但請記住,實體不是從數據庫中提取的,而是根據先前查詢的信息+更新構建的。
從來沒有找到一個解決方案 - 請添加一個,如果你曾經遇到一個! – naspinski