Entity Framework : db가 변경 될 때 모델을 어떻게 새로 고치나요?
데이터베이스에서 edmx 파일을 빌드 한 다음 db가 변경되는 경우 모델이 변경 사항을 선택하도록하려면 어떻게해야합니까?
전체 모델을 삭제하고 재생성합니까 아니면 변경 사항을 감지 할 수 있습니까?
"모델 업데이트"rt를 언급하는 게시물이 있습니다. edmx 파일에서 마우스 명령을 실행했지만 표시되지 않습니다.
db (.net linq-to-entities)의 변경 사항을 반영하도록 edmx 업데이트
방금 시작했습니다.
디자이너 또는 코드보기를보고 있습니까? EDMX 파일을 마우스 오른쪽 버튼으로 클릭하고 선택하여 디자이너를 강제로 열 수 있습니다.Open With -> ADO.NET Entity Data Model Designer
EDMX 디자이너의 디자이너 화면을 마우스 오른쪽 버튼으로 클릭하고 Update Model From Database...
모든 엔티티는 기본적으로 새로 고쳐지며 새 엔티티는 선택한 경우에만 추가됩니다.
편집 : 잘 상쾌하지 않은 경우.
- EDMX 디자이너에서 모든 테이블과 뷰를 선택합니다.
- 그들을 삭제하십시오.
- 그런 다음 데이터베이스에서 모델 업데이트
"데이터베이스에서 업데이트"디자이너가 작은 변경 사항 만 처리 할 수 있음을 발견했습니다. 테이블을 삭제했거나 외래 키를 변경했거나 함수 매핑을 사용하여 저장 프로 시저의 서명을 변경 한 경우 결국에는 모든 엔터티를 삭제하고 "데이터베이스에서 추가"해야하는 그런 엉망인 상태가됩니다. 또는 단순히 edmx 리소스를 삭제하고 다시 시작하십시오.
이것은 여러분에게 도움이 될 것입니다. (내 프로젝트에 이것을 적용했습니다)
다음은 간단한 3 단계입니다.
- 솔루션 탐색기로 이동합니다 . .edmx 파일을 찾습니다 ( 일반적으로 루트 수준에 있음 ).
- .edmx 파일을 열면 모델 다이어그램 창이 나타납니다. 해당 창에서 아무 곳이나 마우스 오른쪽 버튼으로 클릭하고 " 데이터베이스에서 모델 업데이트 "를 선택 합니다. 업데이트 마법사 창이 나타납니다. 완료를 클릭하여 모델을 업데이트하십시오.
- .edmx 파일을 저장하십시오.
그게 다야. 데이터베이스의 변경 사항에 따라 모델 기반을 동기화 / 새로 고침합니다.
자세한 지침. 아래 링크를 방문하십시오.
ASP.NET MVC를 사용한 EF 데이터베이스 우선 : 데이터베이스 변경 및 모델 업데이트.
CodeFirst 모델 업데이트는 자동으로 불가능합니다. 나도 추천하지 않습니다. 코드 우선의 이점 중 하나는 POCO 클래스로 작업 할 수 있다는 것입니다. 이 POCO 클래스를 변경 한 경우 일부 자동 생성 코드가 작업을 파괴하는 것을 원하지 않습니다.
그러나 일부 템플릿 솔루션을 생성하여 업데이트 / 추가 된 엔터티를 새 모델에 추가 할 수 있습니다. 그런 다음 새 cs 파일을 수집하여 작업 프로젝트로 이동하십시오. 이렇게하면 기존 프로젝트에 관련 cs 파일을 추가하기 만하면 새 엔티티 인 경우 충돌이 발생하지 않습니다. 업데이트 인 경우 파일에서 새 속성을 추가하기 만하면됩니다. 테이블 중 하나 또는 두 개에 몇 개의 열을 추가하는 경우 수동으로 POCO 클래스에 추가 할 수 있습니다. 추가 작업이 필요하지 않으며 이것이 Code-First 및 POCO 클래스 작업의 아름다움입니다.
.edmx 모델을 업데이트해야했습니다. 모델 / 사용자 정의 도구 실행 옵션은 나를 위해 필드를 새로 고치지 않았지만 그래픽 디자이너를 열면 필드 이름을 수동으로 바꿀 수있었습니다.
여기:
- EDMX 디자이너에서 테이블 삭제
- 프로젝트 / SLN 다시 빌드 (모델 클래스가 지워짐)
- 데이터베이스에서 모델 업데이트 (원하는 모든 테이블을 읽음)
- 프로젝트 / SLN 다시 빌드 (새 열을 포함하여 모델 클래스 다시 생성)
하지만주의해야합니다. EDMX 파일을 삭제하기 전과 똑같이 설정해야합니다 (삭제 / 재생성 경로를 선택한 경우). 그렇지 않으면 코드와 EF 생성 모델간에 이름 지정 불일치가 발생합니다 ( 특히 복수화 및 단 수화)
이것이 두통을 예방할 수 있기를 바랍니다 =)
자동으로 업데이트되지 않는 이유는 모르겠지만 솔루션을 빌드 한 후에는 "솔루션을 다시 빌드" 하면 삭제하거나 수정 한 모델 클래스 나 템플릿이 데이터베이스에서 업데이트됩니다 .
내 Visual Studio 2015에서 작동합니다!
저는 Entity Framework, 약 12 개의 테이블, 약 15 개의 저장된 procs 및 함수를 통합하는 프로젝트를 너무 크지는 않지만 작업 해 왔습니다. 몇 주 동안 개발 한 후 테이블과 저장된 procs를 새로 고치려고하면 모델을 성공적으로 업데이트하는 한 혼합 된 결과가 나왔습니다. 때로는 변경 사항이 효과적이지만 대부분 그렇지 않습니다. 간단한 열 변경 (순서 변경, 추가, 제거 또는 이름 변경)은 때때로 작동하지만 대부분의 경우 작동하지 않습니다. Visual Studio는 새로 추가하는 것보다 새로 고침에 더 많은 문제가있는 것 같습니다. 특히 열이 추가되거나 삭제되거나 이름이 변경 될 때 저장된 proc 변경 사항이 반영되지 않는 문제가 더 많이 나타납니다. 일관된 동작이 감지되지 않았기 때문에 "이 유형의 변경은 항상 업데이트되며 이러한 유형의 변경은 업데이트되지 않습니다"라고 말할 수 없습니다.
최종 결과, 100 % 효과적인 솔루션을 원한다면 프로젝트에서 EDMX 파일을 삭제하고 프로젝트 (ADO.NET Entity Data Model)에 "새 항목 추가"항목을 삭제하고 모델 이름에 동일한 이름을 사용하는지 확인하십시오. 이것은 매번 작동합니다.
'program tip' 카테고리의 다른 글
클라이언트 측 웹 개발에 Python을 사용할 수 있습니까? (0) | 2020.12.05 |
---|---|
HTML의 텍스트 상자에서 글꼴 크기를 변경하는 방법 (0) | 2020.12.05 |
Android의 여러 테이블 SQLite DB 어댑터? (0) | 2020.12.05 |
CPAN 모듈을 로컬 디렉토리에 어떻게 설치할 수 있습니까? (0) | 2020.12.04 |
OpenSSL 및 C ++로 sha256 생성 (0) | 2020.12.04 |