2017-10-29 2 views
-1

그래서 두 개의 테이블 인 Employee and Address가 있습니다. 모든 직원은 주소가 있어야합니다.1..1 관계에 데이터를 삽입하는 방법 C#

직원 ID가 직원 테이블의 PK, 그것은 ID 및 자동 증가 입니다 내가 A dependent property in a ReferentialConstraint is mapped to a store-generated column. Column:

을 얻고 새 레코드를 생성 할 때 AddressId, 그것은 ID 및 자동 증가

주소 테이블의 PK입니다

나는 하루 종일 낭비했고, 여전히 그것을 고치는 법을 모른다. 또한 DataBase 프로그래밍 초보자입니다. 내가 자세한 내용은 사진을 업로드하고

: 내가 엔티티 프레임 워크와 C#을 사용하고

enter image description here

enter image description here

enter image description here

+0

그래서 처음에는 Address와 Employee를 추가하려고했지만 여전히 같은 오류가 발생했습니다. –

+1

오류가 발생하면 FK를 계산/설정할 수 없으며 데이터베이스가 생성됩니다. 일반적으로 일대일 관계는 나쁜 디자인입니다. 당신이 할 수있는 일은 추가적인 FK를 설정하고, 한 칼럼에서 ID 매핑을 제거하거나, 트랜잭션을 사용하여 동시에 설정할 수 있습니다. 튜토리얼 http://www.entityframeworktutorial.net/add-one-to-one-entities-inentity-framework.aspx는 내가 생각하는 트랜잭션 방식을 사용하고 있습니다. 거래에 대해서도 마찬가지입니다. – DevilSuichiro

답변

0

주소 표 AddressId에서 IsIdentity가 변경되었지만 여전히 기본 키로 변경되었습니다. 그리고 이것이 내 문제를 해결했습니다.

0

이 때문에에 잘못 배치 외래 키입니다 표.

관계 특히 외래 키에서 Chrck. 스키마를 삭제하십시오. EDMX 파일을 업데이트해야하며 모델에서 테이블을 "새로 고치려면 모델에서 테이블을 제거하고 다시 추가해야합니다."

0

1..1 관계는 관계형 데이터베이스에서는 실제로 가능하지 않습니다. 문제는 다른 외래 키를 위반하지 않는 엔티티를 삽입하는 순서가 없다는 것입니다. 직원을 먼저 삽입하면 주소는 아직 존재하지 않지만 직원이없는 주소는 삽입 할 수 없습니다.

정확한 질문에 대한 내 권장 사항은 0-1.1 관계로 변경하는 것입니다. 모든 직원 은 반드시에 주소가 있지만 은 실제로에 주소가있는 직원이 필요하지 않습니다. 그런 다음 주소를 먼저 삽입하고 직원에게 할당 한 다음 직원을 다음에 삽입하십시오. 그런 다음 하나의 트랜잭션으로 저장하십시오.

개인적 조언 : 관계가 진정으로 1..1이면 두 테이블로 나눌 이유가 없습니다. 테이블과 관계의 요점은 중복을 피하는 것입니다. 그러나 에 직원이있는 주소 테이블은 어쨌든 다른 용도로 사용할 수 없으므로 주소 테이블을 직원 테이블에 추가하면됩니다. 이것은 효과가있을뿐만 아니라 더 빠릅니다.

데이터베이스 디자인 및 클래스 디자인 모범 사례가 동일하지 않습니다. C#에서 두 클래스로 분리해야하는 것은 단일 테이블 일 수 있으며 그 반대 일 수도 있습니다.

+0

그럼 어떻게해야합니까? : D –

+0

다른 이유로 두 개의 테이블이 필요합니까? 0-1 .. 사용1, 그렇지 않으면 하나의 테이블로 이동하십시오. – Toxantron

관련 문제