LINQ DB에서 삭제하면 외국 키 협회가있는 다른 테이블에서 레코드를 삭제합니까?

StackOverflow https://stackoverflow.com/questions/2009327

문제

그래서 DB의 루트에는 "고객"테이블이 있습니다. 고객은 영수증, 주소, 문서 등과 같은 약 6-7 개의 다른 테이블로 이동하는 외국 키가 있습니다. Submitchanges ()를 사용하여 고객을 삭제하려면 외국 키 협회와 함께 모든 레코드를 찾아서 삭제할 수 있습니다. 아니면 6 개의 쿼리처럼해야합니까?

도움이 되었습니까?

해결책

캐스케이드 삭제로이를 수행하기 위해 데이터베이스 테이블을 설정 한 경우에만 발생합니다 (즉 on delete cascade).

자세한 내용은 참조하십시오 작업 삽입, 업데이트 및 삭제 (LINQ에서 SQL):

LINQ에서 SQL은 캐스케이드-지연 작업을 지원하거나 인식하지 못합니다. 제약 조건이있는 테이블에서 행을 삭제하려면 데이터베이스의 외국 키 제약 조건에서 On On Cascade Rule을 설정하거나 자신의 코드를 사용하여 먼저 부모를 방지하는 Child Object를 삭제해야합니다. 객체가 삭제되지 않도록합니다. 그렇지 않으면 예외가 발생합니다.

다른 팁

그 외국의 주요 관계에 대해 어떤 종류의 캐스케이드 행동이 있습니까?

기본적으로 대부분의 데이터베이스 시스템 (귀하가 사용하는 SQL Server 포함)에는 "Cascade on on Delete"또는 기타 작업이 없으므로이 경우 아무 일도 일어나지 않을 것입니다.

이 T-SQL 쿼리는 외국의 주요 관계와 삭제 또는 업데이트 참조 조치가 정의되었는지 여부를 보여줍니다.

SELECT
    name 'FK Constraint',
    OBJECT_NAME(parent_object_id) 'Parent table',
    OBJECT_NAME(referenced_object_id) 'Referenced table',
    delete_referential_action ,
    delete_referential_action_desc ,
    update_referential_action ,
    update_referential_action_desc 
FROM 
    sys.foreign_keys

만약 너라면 원하다 일어날 일, 당신은 그 FK 관계가 그 계단식 행동을 사용하도록 설정되어 있는지 확인해야합니다.

MSDN 문서를 참조하십시오 계단식 참조 무결성 제약 자세한 사항은.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top