1

Visual Studio 2013에서 웹 API 서비스를 개발 중이며 솔루션에 ADO.NET 엔터티 데이터 모델 (데이터베이스 우선)을 추가했습니다.Entity Framework 6.0의 데이터베이스에서 모델 업데이트

포함 된 모든 표는 내 edmx 다이어그램에서 올바르게 작성되었습니다.

다음은 몇 가지 변경 사항을 작성했습니다. 소스 데이터베이스에 두 개의 새로운 열을 추가했으며 하나의 열을 제거했습니다. 따라서 데이터베이스에서 모델을 업데이트하려고하면 두 개의 새 열이 추가되고 제거 된 열은 여전히 ​​내 모델과 메시지에있는 반면

오류 '1100': 'Image'속성이 매핑되지 않았습니다.

여기에서 Image은 데이터베이스에서 제거 된 열의 이름입니다.

모델에서이 속성을 수동으로 제거 할 수 있습니까? 아니면 이것을 할 수있는 더 깨끗하고 안전한 방법이 있습니까?

+0

있습니다 .. DbContext과 기능 및 동작을 추가하기 위해 관련 기관에 일을 추가 할 부분 클래스를 사용하여 도움을받을 수 있습니다 * "데이터베이스에서 업데이트"(즉, 저장 계획에서 제거 만) 개념 체계에서 * 아무 것도 제거하지 않습니다. 하지만 나는 표창장을 찾을 수 없다. 나는 수동으로 Conceptual Scheme에서 물건을 제거하는 것을 보았을 뿐이다. 이상하게 느껴진다. [이 답변은 일종의 설명입니다.] (http://stackoverflow.com/a/2188799/7724) 그러나 귀하의 경우에는 EF가 제거 된 열을 개념적 계획의 사용자 정의로 간주하는 것이 직관적이지 않습니다. 스토리지 스키마와 개념적 계획간에 자동으로 매핑되기 때문입니다. – bzlm

답변

2

다른 사람들이 말했듯이 접근법을 변경하는 것이 EF와 DB를 사용하는 더 좋은 방법 일 수 있지만 데이터베이스 우선이 필요하다는 사실부터 시작하여 데이터베이스 우선 모델을 사용하면 이점이 있습니다. (그리고 이것으로부터 두 번째 질문에 대한 답이 달라집니다.) EDMX가 그대로 취해진 것입니다. 이것은 생성 된 코드 조각을 의미합니다. 수정을 풀지 않고 필요할 때마다이를 새로 고치고 다시 만들고 다시 만들 수 있습니다.

이전에 말했듯이, 생성 된 코드의 성격 때문에 EDMX에 대한 모든 변경 사항이 손실되므로 확실하게 속성을 제거 할 수 있지만 모델과 db는 투명하게 동기화되지 않습니다. 업데이트가 "실패"경우

내가 그렇게 할 수있는 가장 좋은 방법은

  1. 업데이트 데이터베이스 구조
  2. 업데이트 EDMX 생각, 변경 사항이 반영되지 않습니다 의미 EDMX을 파괴 한 다음 다시

이 방법이 단순한 접근 일 수도 있지만 데이터베이스의 특성을 먼저 부정하지는 마십시오.

그냥 참고 :는 첫 번째 데이터베이스 작업, 내가 데이터베이스 먼저 생각하지 않는다

+1

데이터베이스에서 모델 업데이트가 실패한 경우 다이어그램에서 모두 선택을 선택하고 데이터베이스에서 모델 업데이트를 수행합니다. 나를 위해 일했습니다. – PAVITRA

+1

@PAVITRA, 내 작업과 관련된 특정 테이블 만 삭제할 수 있었지만 "데이터베이스에서 모델 업데이트"마법사 중에 다시 추가 할 수 있었지만 귀하의 의견은 받아 들인 대답이어야합니다. – David

관련 문제