2012-10-19 3 views
0

MVC4 및 VS_2012를 사용하고 있습니다. 내 관리자 패널을 삭제하고 싶습니다. 나는 보통 이런 식으로 삭제합니다.사용자를 삭제할 UserProfile 테이블

UsersContext dcUser = new UsersContext();

if (userId.HasValue) 
{ 
    var userToDelete = (from u in dcUser.UserProfiles 
         where u.UserId == userId 
         select u).Single(); 

    // dcUser.UserProfiles.DeleteOnSubmit(userToDelete); 
// dcUser.SubmitChanges(); 
    } 

하지만이 경우에는 DeleteOnSubmit 및 SubmitChanges에 액세스 할 수 없습니다. 사용자를 삭제할 수있는 방법이 있습니까?

답변

0

이 같은 시도 :

dcUser.Entry<string>(userToDelete).State = System.Data.EntityState.Deleted; 
+0

dcUser.Entry (userToDelete) .STATE = System.Data.EntityState.Deleted; 나는 그것을 사용했지만 작동하지 않았다. – nermik

+0

* 작동하지 않았다. 예외가 발생했거나 엔티티가 삭제되지 않았다는 의미인가? 상태를 설정 한 후에 컨텍스트에서'.SaveChanges()'메서드를 호출 했습니까? –

+0

예 SaveChages()를 사용했지만 예외가 있습니다. "DBUpdateException이 사용자 코드에 의해 처리되지 않았습니다." – nermik

0

당신이 시도 할 수 있습니다 :

[Authorize(Roles = "Admin")] 
[HttpPost] 
public ActionResult DeleteUser(int id) 
{ 
    var tmpuser = ""; 
    var ctx = new UsersContext(); 
    using (ctx) 
    { 
     var firstOrDefault = ctx.UserProfiles.FirstOrDefault(us => us.UserId==id); 
     if (firstOrDefault != null) 
      tmpuser = firstOrDefault.UserName; 
    } 

    string[] allRoles = Roles.GetRolesForUser(tmpuser); 
    Roles.RemoveUserFromRoles(tmpuser,allRoles); 

    ((SimpleMembershipProvider)Membership.Provider).DeleteAccount(tmpuser); 
    Membership.Provider.DeleteUser(tmpuser, true); 
    Membership.DeleteUser(tmpuser, true); 

    ctx = new UsersContext(); 

    return View(ctx.UserProfiles.OrderBy(user => user.UserName).ToList()); 
} 
관련 문제