2011-03-23 5 views
3

사용자 및 관련 개체를 삭제하려고 할 때 오류 메시지가 표시됩니다. 오류 메시지는 입니다. ObjectStateManager에 개체가 없으므로 개체를 삭제할 수 없습니다.MVC/Entity Framework에서 개체를 삭제하는 방법 : 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"); 
    } 

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); 
      } 

오전 내가 모르는 뭔가가?

+0

을 수정하고 싶어 나는 비슷한 뭔가를해야하지만,'_repository'를 사용하여 삭제할 것입니다. 그건 오타예요? –

답변

5

_userRepository.GetByUserName(UserName)의 코드는 무엇입니까?

나에게 들리는 것은 사용자가 한 컨텍스트에서 사용자를 얻고 다른 사용자로부터 삭제하려고하는 것입니다.

예.

User myUser = null; 

using(MyData data = new MyData()) 
{ 
    myUser = data.GetUserById(1); 
} 

using(MyData data = new MyData()) 
{ 
    data.DeleteUser(myUser); 
} 

제 2 회 "데이터"해당 사용자에 대해 알고하지 않습니다

, 그것을 검색하지 않았기 때문에.

대신

같은 것을해야 할 것
using(MyData data = new MyData()) 
{ 
    data.Context.Entry(myUser).State = EntityState.Deleted; 
    data.SaveChanges(); 
} 

구문이 정확히 맞지 않을 수도 있지만, 기본적으로 당신이 당신의 사용자 개체가 데이터 컨텍스트에서 엔티티 것을 설정해야합니다, 그리고이 상태가 있어요 삭제되었습니다.

당신은 당신이 _userRepository``에서 사용자를 얻을 기존 개체 (EntityState.Modified에 상태를 설정)

+0

고마워요, 그게 ... – Prabhu

관련 문제