2011-04-22 4 views
1

EF 4로 해결하려는 레거시 데이터베이스 디자인이 있습니다. 새 항목을 추가 할 때 문제를 일으키는 두 테이블을 본질적으로 참조하고 있습니다.EF 4에서 순환 참조 다루기

내 구조는 이것이다 :

CREATE TABLE [dbo].[Account] (
    [AccountId] INT IDENTITY (1, 1) NOT NULL, 
    [PrimaryPersonId] INT NULL, 
    [other columns]) 

CREATE TABLE [dbo].[Person] (
    [PersonId] INT IDENTITY (1, 1) NOT NULL, 
    [AccountId] INT NOT NULL, 
    [other columns]) 

사람 계정 (통해 AccountId)에 외래 키를 가지고 계정 사람 (PrimaryPersonId)에 외부 키를 가지고있다. 새 계정과 사람을 만들 때 이것은 분명히 문제입니다. 현재 해결책은 사람이 생성 될 때 새 PrimaryPersonId로 계정 테이블을 업데이트하는 Person 테이블에 삽입 트리거를 사용하는 것입니다.

가능한 경우 트리거를 필요로하지 않으므로이 코드를 모델에 가져 와서 "마법"이 덜 발생합니다. EF 4로 이것을 할 수있는 좋은 방법이 있습니까?

+0

이 account''에있는 두 개의 기록을 수행하고'person'는 항상 서로를 가리? '계정'의 'person'과 '(accountid = 2, primarypersonid = 3)'에'(personid = 1, accountid = 2)가있을 수 있습니까? – Quassnoi

+0

단일 계정과 연결된 사람이 여러 명일 수 있으므로 (따라서 기본 계정이 필요함) 한 사람과 관련된 여러 계정이있을 수 없습니다. –

답변

0

나는 코드에서 삽입이 발생하도록하는 것이 좋습니다. 개인 개체를 매개 변수로 허용하는 계정 메서드를 구축하여 계정 개체 테이블에 개인 개체를 추가합니다. 당신은 더 커져서 그 테이블에 삽입하는 것을 처리하는 인터페이스에 랩핑을 할 수 있습니다. 그래야만 테이블이 항상 있는지 확인할 수 있습니다.

블레이크 로저스 Onyxtek Software Solutions, LLC