2014-06-05 30 views
-2

當我嘗試在更新函數中更新我的入口時,它已成功執行但數據庫未更新。Entity Framwork 5.0 db.savechange無法正常工作

請找到下面的代碼提前

public static string UpdateEmployee(Employee employee) 
{ 
    using (var db = new RandDEntities()) 
    { 
     var empObj = db.Employees.First(x => x.EmpID == employee.EmpID); 
     db.Entry(empObj).State = EntityState.Modified; 
     db.SaveChanges(); 
    } 
    return ""; 
} 

感謝。

+0

嘗試跟蹤sql語句,您是否到達db? – InferOn

+0

sql profiler不在我的系統 – AntonyDurai

+3

你怎麼知道它不工作?它看起來像你只是通過EmpID加載empObj,不改變任何東西,然後保存它。沒有任何屬性發生變化,因此無法保存。 – Mufaka

回答

0

這與Entity Framework完全無關,但更多的是因爲您可能使用localdb,而您的數據庫不在您認爲的位置,並且每次按啓動時都會重新初始化(重置)爲空。

這個問題,在幾十個變體中,被不需要檢查它們的外觀(然後意識到數據庫文件具有不同路徑)的人詢問了。

+0

我是新的在這個實體framwork請幫助更新數據庫 – AntonyDurai

+0

再次,沒有什麼與實體框架。每次在調試器中啓動程序時,運行的數據庫都會從模板中複製。嘗試閱讀答案 - 它確實有幫助。並停止指責完全無關的技術。 – TomTom

2

問題是您保存了錯誤的實體(即empObj)而不是具有更改的實體(即employee)。您的代碼將empObj拉出數據庫,然後轉過身並保存它,而不進行任何更改。您需要修改您的代碼,如下所示:

public static string UpdateEmployee(Employee employee) 
{ 
    using (var db = new RandDEntities()) 
    { 
     db.Employees.Attach(employee); 
     db.Entry(employee).State = EntityState.Modified; 
     db.SaveChanges(); 
    } 
    return ""; 
}