2011-09-07 4 views
0

순환 의존성 문제를 해결하는 데 어려움을 겪고 있으며 누구나 솔루션을 제안 할 수 있는지 궁금합니다. 우리가 클라이언트를 지우고 싶다면, 엔티티 프레임웍은 외부 키 제약 조건이 실패했다는 것을 알려주기 때문에 이것을 거부합니다. 우리의 테이블은 다음과 같이 설정은 다음과 같습니다순환 의존성 피하기 : MySQL/Entity Framework

ClientAccounts

Id [PK] 
Forenames 
Surname 
DefaultEmailId [FK, NULLABLE] 

ClientEmailAddresses

Id [PK] 
Description 
EmailAddress 
ClientId [FK, NON-NULLABLE] 

그래서 클라이언트 자신의 계정에 연결된 제로 또는 여러 개의 이메일 주소을 가질 수 있습니다. 그 중 하나는 기본 연락처 이메일 주소입니다.

ClientEmailAddresses 테이블에 null ClientId가 있으면 허용됩니다. 그러나 우리는 고아 이메일 기록을 남길 수있는 상황을 원하지 않습니다.

답변

1

ClientEmailAddresses 테이블에 'default'필드를 저장하고 ClientAccounts 테이블에서 DefaultEmailId를 제거하는 것이 더 나을 것입니다. 나는 당신의 코드 구조를 알지 못한다. 그러나 때때로 당신과 같은 구조가 중복된다.

+0

우리는 순환 문제를 해결할 수있는이 솔루션을 좋아하지만 걱정하면 여러 기본값을 가질 수 있습니다. – pierre

+0

예,이 경우 논리가 더 복잡해집니다. 처음에는 이전 기본 상태를 재설정하고 새 상태를 설정해야합니다. –

0

ClientEmailAddresses에있는 항목을 먼저 삭제하면 안됩니까? Id2delete 삭제할 클라이언트 ID입니다

## delete Client 
delete from ClientEmailAddresses where ClientId = ID2delete 
delete from ClientAccounts where Id = ID2delete 

:

이 같은 저장 프로 시저를 상상해보십시오.

나는 시도하지는 않았지만 작동해야합니다!