2011-02-18 3 views
0

엔터티 데이터 모델에 뷰를 추가하려고하는데 아래 오류가 나타납니다. 보기는 카운트가있는 그룹입니다. 보기에는 자연의 기본 키가 없기 때문에 이것을 이해하지 못합니다.엔터티 데이터 모델에서 뷰 정의

내가보기에 키를 추가하는 방법을 알아 냈기 때문에 원래 게시물을 수정했습니다. 하지만 여전히 같은 문제가 있습니다.

경고 6013 : 테이블/뷰 'fmcsa.dbo.vieFMCSADocumentCount은' 기본 키를 정의하지 않고 더 올바른 기본 키를 유추 할 수있다. 이 표 /보기가 제외되었습니다. 엔티티를 사용하려면 스키마를 검토하고 올바른 키를 추가하고 주석 처리를 제거해야합니다.

여기

보기 [DBO] CREATE보기를이다. vieFMCSADocumentCount] SCHEMABINDING

AS 
SELECT  COUNT_BIG(*) AS CountOfDocs, ROLE_ID, OWNER_ID 
FROM   dbo.FMCSA_DOCUMENT 
GROUP BY ROLE_ID, OWNER_ID 

와 나는 아직도 작동하지 핵심

CREATE UNIQUE CLUSTERED INDEX [MainIndex] ON [dbo].[vieFMCSADocumentCount] 
(
    [OWNER_ID] ASC, 
    [ROLE_ID] ASC 
) 

를 추가 할 수 있습니다.

+0

[이 질문에 답변] (http://stackoverflow.com/questions/745341/can-ms) -sql-views-have-primary-and-foriegn-keys)를 사용하여 도움이되는지 확인하십시오. – nickmoriarty

+0

코드, XML 또는 데이터 샘플을 게시하는 경우 ** 텍스트 편집기에서 해당 행을 강조 표시하고 "코드 샘플 "버튼 ('{}')을 사용하면 멋지게 형식을 지정하고 구문을 강조 할 수 있습니다! –

+0

[SQL Server 관리자의보기에 논리 키 추가] 중복 가능 (http://stackoverflow.com/questions/1368964/adding-a-logical-key-to-a-view-in-sql-server- 관리자) –

답변

1

지정하지 않았지만 EF4를 사용하고 있다고 가정합니다. 이전에이 문제가 발생했습니다. 수동으로 키를 정의하거나보기를 다시 작성하여 WITH SCHEMABINDING을 다시 작성하고 다시 가져 오려고합니다.

스키마 바인딩은 SQL에보기에 대한 종속성을 추적하도록 효과적으로 알려줍니다. 축복과 저주입니다 (이보기에 스키마 바인딩이 있으면 FMCSA_DOCUMENT에 열을 추가해보십시오). 따라서 효과를 읽으십시오.

CREATE VIEW [dbo].[vieFMCSADocumentCount] WITH SCHEMABINDING 
AS 
    SELECT COUNT(ID) AS CountOfDocs, ROLE_ID, OWNER_ID 
    FROM dbo.FMCSA_DOCUMENT GROUP BY ROLE_ID, OWNER_ID 

EF 모델 브라우저에서 엔터티 형식 폴더로 이동하여보기를 마우스 오른쪽 단추로 클릭하고 디자이너에서 표시를 선택하십시오. 그런 다음보기에서 기본 키를 구성하는 열을 강조 표시하고 마우스 오른쪽 버튼을 클릭하여 "엔터티 키"를 선택하십시오.

+0

이것은 올바른 방향 이었지만 완료되지 않았습니다. 아래를보십시오 –

+0

나는 이것을 풀어 놓았다고 생각했지만 나는하지 않았다. 그래서 나는 원래의 글을 수정했다. –

+0

@BoB Avallone - ScheamBinding을 추가하기 위해 뷰를 변경 한 후 뷰를 삭제하고 EF 모델로 뷰를 다시 가져 왔습니까? 자동 동기화 EF가 여러 시나리오에서 부정확하거나 불완전한 것으로 나타났습니다. 특히 핵심 정의가 있습니다. – EBarr

관련 문제