9

Microsoft SQL Server Management Studio에서 데이터베이스보기에 대한 기본 및 외래 키를 정의 할 수 있습니까? 방법?SQL Server보기에 기본 키와 외래 키가있을 수 있습니까?

수정할 수없는 오래된 4 개의 오래된 데이터베이스 테이블을 읽으려면 ADO.NET 엔터티 데이터 모델을 만들려고합니다. 내가 필요한 데이터의 견해를 만들었습니다.

하나의 다 대다 관계가있는 간단한 세 엔티티 EDMX에 네 개의보기가 매핑되어야합니다. 기본 키 정의가없는 '...'

테이블/뷰와 유효한 기본 키는 추론 할 수 없었다 : 내 데이터 모델을 만들 때

나는이 오류가 발생합니다. 이 표 /보기가 제외되었습니다. 엔터티를 사용하려면 스키마 을 검토하고 올바른 키를 추가하고 주석 처리를 제거해야합니다.

정확하게 두 개의보기의 기본 키를 유추했습니다. 그러나 다른 두 사람과 그렇게하지 못했습니다. 내 문제보기의

하나는 집계 함수를 사용

SELECT MAX(...) ... GROUP BY ... 

다른 두 개의 외래 키의 화합물 기본 키를 가지고해야한다.

+0

http://stackoverflow.com/a/10302066/413032 –

답변

7

당신은 그래서보기를 정의해야

  • 사용하지 않는 모든 PRIMARY KEY 열을 포함

    어떤 JOIN
  • 어떤 집계 함수를 사용하지 않거나 UNION

보기의 모든 행은 표의 한 행에 정확하게 매핑되어야합니다. 내 문제보기의

하나는 집계 함수

그것은 업데이트 할 수 없습니다를 사용합니다. 읽기 전용 엔티티 here에서 해결책 없음 키를 추정 할 수없는 경우

(어떤 키 요소) 해당 EntityType 요소를 포함하는 코드 설명은 .edmx 파일 SSDL 섹션에 추가된다. 귀하의 경우에는

, 당신이 읽기 전용 엔티티를 원하는 것으로 보이기 때문에, 그럴 수 :

SSDL 엔티티의 주석
    • 마르크 일/= "거짓"Null 허용 같은 일부 속성
    • 적절한 키 요소를 추가하십시오.
    • 해당 정의 쿼리를 추가하십시오.두 번째 질문에 대한

:

다른 하나는 documentation에서 두 개의 외래 키

의 화합물 기본 키가 에게서는 :

을 repr 테이블 데이터베이스에서 두 테이블 간의 다 대다 관계는 개념 스키마에서 동등한 엔티티를 갖지 않을 수도 있습니다. EDM 도구가 외래 키 인 두 개 이외의 열이없는 테이블을 발견하면 매핑 테이블은 개념 스키마에서 엔티티 대신 다 대다 연관으로 표시됩니다.

+0

내가 외래 키 제약 조건을 정의 할 수 없기 때문에 (할 수 있습니까?) 뷰간에 Visual Studio 원하는 다 대다 관계를 만들 수 없습니다. –

+0

고맙습니다. 나는 자동 생성 된 EDMX XML 파일을 파고 그것을 이해하려고 노력하고있다. –

+0

기본 테이블 사이에 외래 키 제약 조건을 정의 할 수 있으며 EDM 도구가이를 가져올 수 있어야합니다. 또한보기에 다른 열이 없지만 두 개의 외래 키가 있는지 확인하십시오. – Quassnoi

-1

실제로 모델의 JOIN 및 생성 및 엔터티를 사용하는보기를 만들 수 있습니다.

2

이 같은 일을보기에 NOT NULL 인덱스 컬럼을 작성하여 뷰를 변경할 수 있습니다 :

ALTER VIEW [dbo].[ViewName] 
AS 
    SELECT ISNULL(CAST(CASE ROW_NUMBER() OVER (ORDER BY columnNames) 
          WHEN ROW_NUMBER() OVER (ORDER BY columnNames) 
          THEN ROW_NUMBER() OVER (ORDER BY columnNames) 
          ELSE 0 
         END AS INT), 0) AS ID