Pra*_*bhu 3 .net c# asp.net-mvc entity-framework linq-to-sql
尝试删除用户和关联对象时收到错误消息.错误消息是无法删除对象,因为在ObjectStateManager中找不到该对象.
CONTROLLER
[Authorize, HttpPost]
public ActionResult DeleteUser(string UserName)
{
User user = _userRepository.GetByUserName(UserName);
if (user == null)
return new FileNotFoundResult();
_repository.DeleteUser(user);
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
REPOSITORY
public void DeleteUser(User user)
{
foreach (Follower follower in user.Followers)
_db.Followers.DeleteObject(follower);
foreach (Comment comment in user.Comments.ToList())
_db.Comments.DeleteObject(comment);
_db.Users.DeleteObject(user);
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
你的代码是_userRepository.GetByUserName(UserName)什么样的?
听起来对我来说,你是从一个上下文中获取用户,并试图从另一个上下文中删除.
例如
User myUser = null;
using(MyData data = new MyData())
{
myUser = data.GetUserById(1);
}
Run Code Online (Sandbox Code Playgroud)
using(MyData data = new MyData())
{
data.DeleteUser(myUser);
}
Run Code Online (Sandbox Code Playgroud)
第二个"数据"不知道该用户,因为它没有检索它.
相反,你必须要有类似的东西
using(MyData data = new MyData())
{
data.Context.Entry(myUser).State = EntityState.Deleted;
data.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
语法可能不完全正确,但实际上您需要设置您的用户对象是该数据上下文中的实体,并且它的状态是Deleted.
您需要做类似的事情我想修改现有对象(将状态设置为EntityState.Modified)
| 归档时间: |
|
| 查看次数: |
8984 次 |
| 最近记录: |