두 테이블이있는 데이터베이스 프레임 워크가 있습니다. 첫 번째 테이블에는 ID 및 기본 키인 단일 열이 있습니다. 두 번째 테이블에는 두 개의 열이 있습니다. 하나는 varchar 기본 키이고 다른 하나는 첫 번째 테이블에 대한 nullable 외래 키입니다. 그것이 '계산 된'또는 '정체성'StoreGeneratedPattern로 표시되어 있으므로Entity Framework는 0..1에서 * 관계를 좋아하지 않습니다.
조건이 열 멤버 'DetailsControlSetId'을 지정할 수 없습니다 :
것은 나는 다음과 같은 유효성 검사 오류를 얻을 모델에 테이블을 추가 할 때.여기서 'DetailsControlSetId'는 두 번째 테이블의 두 번째 외래 키 참조입니다.
단계 재현 :
1) 비주얼 스튜디오 2010 RC로 새로운 닷넷 3.5 클라이언트 프로파일 프로젝트를 만듭니다.
2) 아래의 스크립트를 테스트 데이터베이스와 비교하여 실행하십시오 (빈 데이터베이스가 수행 할 것입니다).
3) 생성 된 데이터베이스를 대상으로 EDMX 모델을 만들지 만 테이블을 가져 오지 않도록 선택합니다.
4) 데이터베이스의 모델을 업데이트하여 데이터베이스의 두 테이블 (DetailsControlSet 및 Application)을 선택합니다.
5) EDMX 모델의 유효성을 검사합니다.
테이블 생성 스크립트 :
CREATE TABLE [dbo].[DetailsControlSet](
[DetailsControlSetId] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_DetailsControlSet] PRIMARY KEY CLUSTERED
(
[DetailsControlSetId] ASC
)
)
GO
CREATE TABLE [dbo].[Application](
[ApplicationName] [varchar](50) NOT NULL,
[DetailsControlSetId] [int] NULL,
CONSTRAINT [PK_Application] PRIMARY KEY CLUSTERED
(
[ApplicationName] ASC
)
)
GO
ALTER TABLE [dbo].[Application] WITH CHECK ADD CONSTRAINT [FK_Application_DetailsControlSet] FOREIGN KEY([DetailsControlSetId])
REFERENCES [dbo].[DetailsControlSet] ([DetailsControlSetId])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Application] CHECK CONSTRAINT [FK_Application_DetailsControlSet]
GO
외래 키 열이 실제로 생성 되었습니까? 아니면 모델을 잘못 가져 오는 디자이너입니까? 또한 사용중인 Visual Studio 버전은 무엇입니까? – Rory
복제 : http://stackoverflow.com/questions/2410590/what-is-the-properway-to-create-a- reinursive-entity-in-the-entity-framework @Orion, 질문에 대답하십시오. 같은 질문을 다시 게시하는 것이 아니라 원래 질문에 대해 질문했습니다. –
음, 이것 역시 중복 : http://stackoverflow.com/questions/2382135/recursive-entity-causing-all-sorts-of-problems –