2012-06-25 2 views
0

데이터베이스에서 항목을 삭제하려고하지만 다른 테이블에서 해당 ID를 참조했기 때문에 항목을 삭제하려고합니다. 나는에서 삭제 중 해요 표는 다음과 같습니다엔티티 프레임 워크를 사용하는 MSSQL 데이터베이스를 통한 계단식 삭제

Packages(packageID(PRIMARY), package_name, etc. . . .) 

내가 관련된 변종을 삭제 계단식 할 PackageVariant에서 항목의 삭제에

PackageVariant(packageID(FOREIGN), variantID(FOREIGN)) //those foreign keys combine to make PRIMARY composite key 

이다에서 삭제 계단식으로 원하는 테이블 :

Variant(variantID(PRIMARY), variant_name, etc . . .) 

그리고 나는 캐스케이드를 가고 싶습니다.

이제 Entity Framework 모델을 설정하고 제대로 작동하므로 데이터베이스를 설정하고 올바르게 작동합니다. 그렇다면이 둘 중 하나 또는 둘 모두를 변경하여이 계단식 삭제가 작동하도록하려면 어떻게해야합니까?

또한 PackageVariantProduct 데이터베이스 다이어그램을 만들었습니다. 그냥 CascadeOn Delete 규칙을 설정해야하므로

답변

1

캐스케이드 삭제

덕분에 데이터베이스에 참조 제한 조건에 처리됩니다. 문제는 계단식 연결은 주체에서 종속 엔터티로만 발생할 수 있다는 것입니다. 그러므로 PackageVariant에서 삭제 (계단식 삭제 포함)하면 Packages 또는 Variants이 삭제 될 것으로 예상되는 경우 작동하지 않습니다. 정말로 필요한 경우 데이터베이스 트리거를 사용해야합니다.

관련 문제