0

SQL 2005의 인스턴스에서 새 SQL Server 2008 R2로 DB를 이동했습니다. 우리는 앱의 연결 문자열을 새 데이터베이스를 가리 키도록 변경했으며 심지어 2005 년에서 2008 년까지 ProviderManifestToken을 수정했습니다. 데이터베이스의 항목을 기존 edmx 모델에 추가하려고 시도 할 때까지 모든 것이 잘 작동했습니다. '데이터베이스에서 모델 업데이트'마법사를 사용하여 edmx 다이어그램에 테이블을 추가합니다. 테이블은 다이어그램에 나타나지 만 일부는 연관 및/또는 외래 키를 가져올 수 있습니다. 연결 문자열을 이전 2005 sql 인스턴스를 가리 키도록 전환하면 모든 것이 올바르게 가져 오기되고 연결이 있습니다. 필요한 경우 세부 정보를 제공해 드리겠습니다. 이 패턴을 전혀 찾을 수 없습니다. 뭐라 구요?EF 4.3 DB에서 첫 번째 모델 가져 오기 연결이 없음

업데이트 : 새 프로젝트를 만들고 edmx를 추가하고 2008r2 db 인스턴스를 가리키며 선택한 테이블에 연관이 있지만 디자이너가 연결을 선택하지 못했습니다. EF를 작동 시키려면 SQL 서버에 설치할 필요가 있습니까?

답변

4

현재 작동 중입니다. web.config에서 연결 문자열을 삭제 한 다음 '데이터베이스에서 모델 업데이트'를 사용하고 '새 연결 추가'대화 상자를 통해 새 서버의 데이터베이스를 가리 키도록하면 동작하는 것처럼 보였습니다. 이것이 작동을 멈 추면 다시 게시 할 것입니다.

업데이트 : 두 가지 문제점이 있습니다. 두 번째는 DB의 테이블 중 하나에 동일한 열에 거의 동일한 중복 색인이 두 개 있다는 점입니다. 클러스터 된 PK 인덱스 및 고유 한 비 클러스터형 인덱스 따라서이 테이블을 가리키는 외래 키를 만들 때마다 데이터베이스는 제약 조건을 적용하기 위해 고유 한 비 클러스터형 인덱스를 선택했습니다 (왜? 모름). 그러나 Entity Framework는이를 좋아하지 않으며 외래 키 연결을 만들거나 인식하지 않습니다. 클러스터되지 않은 여분의 인덱스를 삭제하고 클러스터 된 인덱스를 가리 키도록 모든 외래 키를 다시 만들어야했습니다. 그 작업이 완료되면 데이터베이스에서 모델을 업데이트하고 모든 연결이 존재합니다. SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C ORDER BY CONSTRAINT_NAME UNIQUE_CONSTRAINT_NAME 열을 FK에 대한 질문이 작동하려면 클러스터 PK를 가리켜 야한다 :

여기 내 외래 키가 사용 된 인덱스를 확인하는 데 사용되는 SQL 쿼리입니다.

+0

굉장합니다. 이 모든 세부 사항을 업데이트에 제공해 주셔서 감사합니다. DB는 완전히 다른 데이터 유형 (int vs nvarchar)의 인덱스 임에도 불구하고 SQLServer 2012에서 나에게도 똑같이 적용되었습니다! – dansan

0

어떻게 데이터베이스를 2008 Server로 옮겼습니까? 일부 또는 모든 관계/제약 조건이 마이그레이션되지 않은 것처럼 들립니다. 그러면 2008 데이터베이스를 가리킬 때 협회가 나타나지 않는 이유를 설명 할 수 있습니다.

+0

2008 인스턴스에 새 DB를 만들고 2005 인스턴스에서 백업을 복원했습니다. – Chris

+0

2008 인스턴스에 확실히 사전 설정된 관계/제약 조건. – Chris