更新|删除asp.net中的记录mvc 4

时间:2014-03-30 15:03:43

标签: c# asp.net-mvc

早安|晚上

我有这个代码用于更新控制器中的记录

[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来显示数据。

你能帮助我吗?_)

2 个答案:

答案 0 :(得分:1)

这是使用实体框架吗? 不幸的是,这在EF中不能像编写服务或MVC api时那样工作。也就是说,只传递id。

EF只能在上下文中加载后删除实体。这意味着要么检索实体然后删除它,要么创建一个“shell”实体,附加它,然后执行删除。 (删除方法的替代方法是附加它,然后将其状态设置为已删除,然后执行SaveChanges。这与引擎盖下的内容相同)

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

答案 1 :(得分:0)

当你迅速解决问题时,那很好:)

是的我用“Jim Leonardo”的帮助解决了我的问题。

非常感谢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 });
            }
        }

再次感谢Jim Leonardo先生

问题已解决:)