我有一個.Net Mvc項目,我的Databasecontext出現問題。更新/ saveChanges更具體。當我使用方法(下面)中的調試點調試代碼時,它會接合工作,但不是沒有調試點。我不明白爲什麼? SaveChanges不知何故檢測到對實體的更改。SaveChanges爲什麼不檢測對實體的更改?
var user = DatabaseContext.Users.Single(u => u.Id == userId && u.Newsdesk.Id == newsdeskId);
user.Newsdesk = null;
DatabaseContext.Update(user);
DatabaseContext.SaveChanges();
在DatabaseContext我的更新方法是這樣的:
public T Update<T>(T entity) where T : class
{
var set = Set<T>().Attach(entity);
Entry(entity).State = EntityState.Modified;
return set;
}
如果有人可以點我在正確的方向,我將非常感激
感謝您的快速響應。數據庫上下文在控制器的構造函數中創建。這是使用數據庫上下文的不好的方式嗎? – bassen 2013-03-01 14:55:45
可能與否。我不想傷害許多有經驗的成員的特質,這就是爲什麼我不說** YES **。但總的來說,答案是:**是**!特別是如果你不知道自己在做什麼,並對EF和.NET有廣泛而深入的理解。嘗試儘可能少地「保持連接到數據庫」。創建一個小的_business logic_容器類,您可以在其中操作對數據庫所做的更改(以及讀取操作)。使其成爲應用程序的其他部分沒有提及**上下文**(儘可能)這個詞。通過這個改變你可以解決問題 – 2013-03-01 15:08:20
感謝Eduard的幫助!你的回答對我很有幫助。現在我必須決定是否值得重構databasecontext的實現。目前,我在這裏找到了解決我的問題的方法。 http://stackoverflow.com/questions/6420976/setting-a-foreign-key-to-null-when-using-entity-framework-code-first – bassen 2013-03-04 14:56:12