2011-09-08 5 views
1

에서이 삭제 문제를 디버그하는 데 사용할 수있는 다른 옵션이 있습니까 the lightswitch forum에이 문제를 게시했는데 아무 것도 없습니다. 나는 Lightswitch를 포기하기 전에 한 번 더해볼 것이라고 생각했다.Lightswitch

잘 정의 된 관계형 제약 조건이있는 SQL Server 데이터베이스에 대해 삭제를 구현하고 있습니다. 여러 가지 이유로 이러한 관계에 대해 계단식 삭제를 지정할 수는 없습니다.

하나의 엔티티 유형을 성공적으로 삭제하고있어 내 접근법이 올바른 것 같습니다. 기업의 삭제 이벤트에서,이 같은 모든 관련 아동을 삭제 해요 :하지만 내 개체 타입의

entity.simpleChild.Delete(); 

foreach (var child in entity.complexChild) 
{ 
    ((IEntityObject)child).Delete(); 
} 

foreach (var child in entity.ChildWithGrandChildren) 
{ 
    foreach (var grandChild in child.Children) 
    { 
     ((IEntityObject)grandChild).Delete(); 
    } 
    child.Delete(); 
} 

한 실패를. 이 엔티티에는 손자가 있지만 그 사람도 삭제합니다. 뿐만 아니라 손자의 삭제를 주석 처리하고 관련 손주가없는 엔티티를 삭제하려고하면 동일한 오류가 발생합니다. 작동하는 TSQL 스크립트와 동일한 순서로 모든 것을 삭제합니다. 그러나 런타임에이 오류가 발생합니다.

조작이 실패했습니다. 하나 이상의 외래 키 특성이 널 (NULL) 입력 가능하지 않아 관계를 변경할 수 없습니다. 관계가 변경되면 관련 외래 키 등록 정보는 널 (NULL) 값으로 설정됩니다. 외부 키가 널값을 지원하지 않으면, 새 관계가 정의되어야하고, 외부 키 등록 정보에 널이 아닌 다른 값이 지정되어야합니다. 그렇지 않으면 관련이없는 오브젝트가 h 제되어야합니다.

내가 데이터베이스를 프로파일 링 할 때 많은 선택을 볼 수 있지만 삭제 시도가 없으므로 Lightswitch에서 으로 생각하면에 문제가있을 것이라고 생각합니다. 문제가있는 곳을 파악하기 위해 무엇을 할 수 있습니까? 모델에서 다양한 관련 엔터티를 제거하면 다른 메시지가 생성되지 않습니다.

+0

이 오류를 유발하는 코드를 게시 해주십시오. 명령, 데이터 이벤트 내부 등에 응답하여 작업중인 컨텍스트를 나타내십시오. –

+0

간단한 코드 샘플이 추가되었습니다. 앞서 언급 한 것처럼이 코드는 엔티티의 Deleting 이벤트에서 실행됩니다. – dudeNumber4

+0

중간 자식 엔티티를 통해 "조부모"와 관련된 엔티티로 "손주"를 정의하는 경우 게시 한 코드는 손자를 삭제하지 않습니다. –

답변

0

다음은 3 부분 관계를 성공적으로 삭제할 수있는 샘플 코드입니다. VS LightSwitch 응용 프로그램의 Person - Child - Grandchild. SQL 서버 테이블 정의는 예제처럼 DELETE NO ACTION을 사용합니다.

partial void People_Deleting(Person entity) 
    { 
     foreach (var child in entity.Children) 
     { 
      foreach (var grandchild in child.GrandChildQuery) 
      { 
       ((IEntityObject)grandchild).Delete(); 
      } 

      child.Delete(); 
     } 
    } 

이 코드는 게시 한 샘플 코드와 다른 구조로되어 있습니다. 특히이 코드는 중간 자식 엔터티에서 손자를 삭제하는 내부 루프를 가지고 있습니다. 내부 루프가 없기 때문에 샘플에 표시되지 않은 손자를 삭제하는 다른 전략이 있거나 문제가 있어야합니다.

+0

Dang, 나는 손자 손자를 자식으로 바꿨다. GrandChildren을 자식으로 바꿨다. GrandChildQuery가 작동하지 않았다. 분명히 손자 수집과 쿼리는 동의어입니다. – dudeNumber4

0

동일한 문제가있어서 다른 개발자가 자식에 대한 삭제 및 삭제 된 이벤트에 코드를 넣었으므로이 코드에서 오류가 발생했습니다.

희망이 다른 사람들이 같은 문제에 직면하고 도움이됩니다.

관련 문제