2015-12-26 68 views
2

我有以下代碼:C#LinqToSql的SubmitChanges()不更新,即使PK設定

public int DeActivate(User entity) { 
      try { 
       using (UsersDataContext usersDC = new UsersDataContext()) { 
        users user = new users(); 
        user = usersDC.users.Where(x => x.id == entity.Id). 
         Select(x => new users {active = x.active}).FirstOrDefault(); 
        //user.active = entity.Active; 
        user.active = false; 
        usersDC.SubmitChanges(); 
        return 1; 
        } 
       } 
      catch { 
       return 0; 
       } 
     } 

在其上運行的方法的NUnit測試,該方法返回1,因爲這是應該做的,並且在解除糾錯的同時不會拋出異常。但是,當我與數據庫進行交叉檢查時,記錄沒有受到影響。我嘗試了以下方法:重新創建DBML文件,檢查是否存在PK,並檢查了以下網站: MSDN question,StackOverflow question,但無濟於事。

回答

2

您的選擇語句錯誤。嘗試這個。

public int DeActivate(User entity) { 
    try { 
    using (UsersDataContext usersDC = new UsersDataContext()) { 
     var user = usersDC.users.Single(x => x.id == entity.Id); 
     user.active = false; 
     usersDC.SubmitChanges(); 
     return 1; 
    } 
    } catch { 
     return 0; 
    } 
    }