2014-03-30 41 views
0

早安|晚間更新|刪除記錄在asp.net mvc的4

我有在控制器更新記錄這段代碼

[HttpPost] 
     public JsonResult Userupdate(UserProfile user) 
     { 
      try 
      { 
       if (!ModelState.IsValid) 
       { 
        return Json(new 
        { 
         Result = "ERROR", 
         Message = "Form is not valid! " + 
          "Please correct it and try again." 
        }); 
       } 

       var usersC = from x in _db.UserProfiles where x.UserId == user.UserId select x; 
       //int studentCount = usersC.Count(); 
       //List<UserProfile> students = usersC.ToList(); 
       UserProfile vb = new UserProfile(); 
       vb.UserId = user.UserId; 
       vb.UserName = user.UserName; 
       vb.IdentificationNumber = user.IdentificationNumber; 
       vb.department = user.department; 
       //_db.UserProfiles.Add(vb); 
       _db.SaveChanges(); 

       return Json(new { Result = "OK"}); 
      } 
      catch (Exception ex) 
      { 
       return Json(new { Result = "ERROR", Message = ex.Message }); 
      } 
     } 

我有在控制器刪除記錄這段代碼

[HttpPost] 
     public JsonResult userdelete(int userId) 
     { 
      try 
      { 
       //_personRepository.DeletePerson(personId); 
       return Json(new { Result = "OK" }); 
      } 
      catch (Exception ex) 
      { 
       return Json(new { Result = "ERROR", Message = ex.Message }); 
      } 
     } 

而你在評論中看到「存儲庫」,因爲我沒有在我的項目中使用它;我使用鏈接方法。

我寫了下面的代碼與數據庫

UsersContext _db = new UsersContext(); 

連接,但我沒有從數據庫中刪除它的正確方法。

備註:::我使用jTable來顯示數據。

你能幫我嗎:_)

回答

1

這是使用實體框架嗎? 不幸的是,在編寫服務或MVC api時,這種方式在EF中無法工作。也就是說,只傳遞id。

EF只能在上下文加載後刪除實體。這意味着要麼檢索實體,然後刪除它或創建一個「殼」實體,附加它,然後執行刪除操作。 (另一種方法來刪除的方法是將其固定,然後將其狀態爲刪除,然後做的SaveChanges。它的引擎蓋下是相同的)

var userEntity = new UserProfile {UserId = userId}; 
_db.Users.Attach(userEntity); 
_db.Users.Remove(userEntity); 
_db.SaveChanges(); 
0

這是偉大的,當你快速解決你的問題:)

是的,我用「吉姆·萊昂納多」的幫助解決了我的問題。

非常感謝Jim Leonardo先生。


以下代碼用於更新記錄,並且它工作正常。

[HttpPost] 
     public JsonResult Userupdate(UserProfile user) 
     { 
      try 
      { 
       if (!ModelState.IsValid) 
       { 
        return Json(new 
        { 
         Result = "ERROR", 
         Message = "Form is not valid! " + 
          "Please correct it and try again." 
        }); 
       } 

       var usersC = from x in _db.UserProfiles where x.UserId == user.UserId select x; 
       var UserToUpdate = usersC.First(); 
       UserToUpdate.UserId = user.UserId; 
       UserToUpdate.UserName = user.UserName; 
       UserToUpdate.IdentificationNumber = user.IdentificationNumber; 
       UserToUpdate.department = user.department; 
       _db.SaveChanges(); 

       return Json(new { Result = "OK"}); 
      } 
      catch (Exception ex) 
      { 
       return Json(new { Result = "ERROR", Message = ex.Message }); 
      } 
     } 

和下面的代碼是用於刪除記錄;它工作正常。

[HttpPost] 
     public JsonResult userdelete(UserProfile user, int userId) 
     { 
      try 
      { 
       var usersC = from x in _db.UserProfiles where x.UserId == user.UserId select x; 
       var UserToUpdate = usersC.First(); 
       UserToUpdate.UserId = user.UserId; 
       UserToUpdate.UserName = user.UserName; 
       UserToUpdate.IdentificationNumber = user.IdentificationNumber; 
       UserToUpdate.department = user.department; 
       _db.UserProfiles.Remove(UserToUpdate); 
       _db.SaveChanges(); 
       return Json(new { Result = "OK" }); 
      } 
      catch (Exception ex) 
      { 
       return Json(new { Result = "ERROR", Message = ex.Message }); 
      } 
     } 

再次謝謝主席吉姆·萊昂納多

問題解決了:)