2015-12-26 56 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; 
    } 
    }