0

개발하는 동안 Entity Framework 4.3 마이그레이션과 같은 프레임 워크에 대한 아이디어를 좋아합니다 (마이그레이션 클래스 대신 SQL 스크립트로 작업해야 함). 모든 개발자 데이터베이스를 최신 상태로 유지합니다. 누군가는 최신 소스를 얻기 위해 업데이트를 수행하고 응용 프로그램을 실행하고 데이터베이스를 최신 마이그레이션으로 업데이트해야하거나 (또는 ​​마이그레이션이 자동으로 수행되어야하는) 오류를 얻으려고합니다. 마이그레이션 파일의 타임 스탬프가 지정되므로 devs는 파일 두 개를 동일하게 지정하거나 파일을 실행해야하는 순서에 대해 걱정하지 않아도됩니다.전체 데이터베이스 마이그레이션 스택 설계

WebDeploy 배포 패키지를 만들 준비가되면 패키지에 포함 시키길 원합니다. 프로덕션 데이터베이스를 최신 db 버전으로 이동하는 데 필요한 스크립트 따라서 어떻게 든 MSBuild 또는 WebDeploy는 어떤 스크립트를 패키지화해야하는지 결정해야합니다. 배포의 경우 응용 프로그램이 EF가 제공하는 것과 같은 자체 업데이트를 시도하지 않기를 바랍니다. 패키지를 IT 부서에 맡기거나 배포 서버를 통해 자동 배포하려고합니다.

내 질문의 일부를

은 다음과 같습니다

  1. 대신 내 개발 요구에 DBMigration 클래스의 SQL 스크립트 4.3 일을 EF 수 (그 수 있다면 좋을 텐데, 그래서 난 이미 내 ORM을 위해 그것을 사용하고 있습니다)?

  2. MSBuild 또는 WebDeploy는 데이터베이스 마이그레이션의 개념을 이해합니다 (예 : EF.4.3 migrationHistory 테이블을 인식합니까). 또는 실행해야하는 스크립트를 제공해야합니다. 최신 마이그레이션으로? 수동으로 pakaged해야 할 스크립트를 결정하는 것은 마이그레이션을 이해할 수있는 MS WebDeploy 확장이 있습니까?

  3. 내 관심사와 아이디어는 유효합니까? 나는이 물건을 연구 중이고 그래서 나는 정말로 모른다.

답변

2

귀하의 우려가 유효하다고 생각합니다. 개발 중에는 개발자 컴퓨터를 동기화 상태로 유지하는 모든 것이 수행됩니다. 배포 할 때 더 많은 제어가 필요합니다.

내 프로젝트에서는 모든 데이터베이스가 동일한 순서로 같은 순서로 마이그레이션되도록 코드 기반 마이그레이션 만 사용하기로 결정했습니다. 자동 이주 및 db 작성은 db가 존재하며 유효한지 만 점검하는 사용자 정의 초기화 전략에 의해 사용 불가능하게됩니다.

자세한 내용은 Prevent EF Migrations from Creating or Changing the Database으로 작성했습니다. 나는 또한 merge conflicts을 조금 보았다. 결국 여러 개발자와 함께 일어날 것이다.

0
  1. 당신은 SQL 메소드를 호출하여 클래스에서 SQL을 실행하거나 업데이트 데이터베이스 명령을 사용하여 -script 매개 변수를 사용하여 마이그레이션에서 SQL을 생성 할 수 있습니다.

  2. 아니요. 그들은 webdeploy에 대한 지원을 추가하려고했지만 rtm 이전에 분명히 결정했습니다. 그들은 그러나 어느 쪽에서도 호출 할 수있는 명령 줄 앱 (및 powershell 스크립트)을 공개했습니다. Triggering EF migration at application startup by code를 - 내 프로젝트에서 무엇을

내 응용 프로그램의 시작 모듈을 생성하고 자동으로 배치되지 않은 마이그레이션을 실행합니다. 완벽하지는 않지만 개발자는 db를 변경하기 전에 최신 정보를 얻은 후에 앱을 실행해야합니다.하지만 최신 정보와 배포 정보를 얻을 수 있습니다.