또 다른 관점에서 살펴 보겠습니다. Entity Framework Database Maintenance는 모든 엔터프라이즈 또는 대규모 데이터베이스 프로젝트에서 전혀 쓸모가 없습니다.
문제는 다음과 같습니다
자동 스키마 업데이트. 데이터베이스 유지 관리의 기본 사항을 완전히 위반하기 때문에 이것은 내가 원하는 것이 아닙니다. 문제는 다음과 같습니다. (a) 최신 버전을 실행하는 누군가가 문제를 일으키는 대신 데이터베이스를 업데이트하고 (b) dba는 일반적으로 백업을 먼저 수행하여 업데이트를 예약합니다. 따라서 자동 업데이트는 쓸모가 없습니다.
DB 생성은 기본적으로 성능이 저하 된 에지 사례에서만 작동합니다. 어느 데이터베이스에 관계없이 고급 데이터베이스 기능을 사용하지 마십시오. SQL Server 예제 : 인덱스에 필드 포함, 인덱스 필터, 파티셔닝, 압축, 필드에 대한 유효성 검사 규칙.
마이그레이션-데이터 변환이나 다단계 업데이트가 필요없는 엣지 사례가 다시 발생한다고 가정합니다. 예 : 표 X에는 사용자의 작업을 기록하는 기록 "사용자"필드가 있습니다. 새로운 설정에는 사용자 테이블이 있으므로 사용자 테이블을 생성 한 다음 사용자를 생성 한 다음 테이블 x에 사용자 참조 필드를 생성 한 다음 사용자 테이블에서 사용자로 업데이트 한 다음 사용자 필드를 삭제해야합니다.
이러한 시나리오를 처리 할 수있는 유일한 방법은 생성 및 마이그레이션 스크립트와 올바른 버전입니다.
이제 SSDT는 실제로 작동하기 때문에 Entity Framework보다 특정 데이터베이스 버전을 훨씬 더 잘 버전 화하는 훌륭한 도구입니다. 에서와 같이 : 그것은 모든 기능을 기록합니다. 데이터베이스가 없으면 코드를 먼저 사용할 수 있습니다. 우리는 항상 최소한 인덱스를 필터링했기 때문에 EF는 저에게 필요한 것의 10 %까지 도달하지 못할 것입니다.
우리의 접근 방식은 다음과 같습니다.
데이터베이스에서 데이터베이스를 디자인 한 다음 체크인되는 SSDT 모듈로 동기화하십시오. 스키마 동기화를 통해 개발자는 버전을 빠르게 업데이트 할 수 있습니다. 항상 (특수 서버) 어딘가에 현재 버전의 권위있는 마스터 데이터베이스가 있으므로 참조 할 수있는 참조 버전이 있습니다.
버전이 변경되고 데이터베이스에 배포 할 수있는 훌륭한 메커니즘을 갖춘 릴리스에 필요한 델타 스크립트를 생성하십시오.