2010-04-15 3 views
2

삭제 :LINQ 내가 데이터베이스에서 사용자를 삭제하는 코드를 다음 한 예외

var user = from u in db.Users 
      where u.Username == username 
      select u; 

if (user.Count() > 0) 
{ 
    db.DeleteObject(user.First()); 
    db.SaveChanges(); 
} 

을하지만이 같은 예외를 가지고 :

at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager sta teManager, IEntityAdapter adapter) 
at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache) 
at System.Data.Objects.ObjectContext.SaveChanges(Boolean acceptChangesDuringSave) 
at System.Data.Objects.ObjectContext.SaveChanges() 
at MyCompany.SystemSoftware.DQMgr.User.DeleteUser(String username) in C:\workspace\SystemSoftware\SystemSoftware\src\dqm\User.cs:line 479 

Users 테이블이 몇 가지 다른 테이블에 의해 참조됩니다. 아마도 외래 키 제약 조건 때문일 것입니까?

+2

예외 메시지 란 무엇입니까? – SLaks

+0

@SLaks 예외 메시지는 내 게시물에 있습니다. – 5YrsLaterDBA

+4

스택 트레이스입니다. 메시지가 뭐니? – SLaks

답변

1

이 문제를 해결하는 가장 쉬운 방법은 외부 키 제약 조건을 Cascade on Drop으로 설정하는 것이지만 참조 된 레코드를 잃을 준비가 된 경우에 대비할 수 있습니다.

그렇지 않으면 사용자 개체 null의 관계를 나타내는 속성을 설정을 시도 할 수 있습니다 다음 사용자를 삭제합니다.

관련 문제