5

빌드시, 자동으로 새 데이터베이스를 생성하는 sql 스크립트를 작성하려고합니다. 이 스크립트를 사용하여 프로덕션 데이터베이스와 비교할 수있는 마스터 데이터베이스를 만들 수 있으므로 마이그레이션 스크립트를 생성 할 계획입니다. 내 개발 DB를 사용할 수 없다. 개발 중에 SqlCE를 사용하도록 설정했기 때문이다.빌드시 Ef4 CodeFirst로 db sql 스크립트를 생성 할 수 있습니까?

불행히도, 난 SQL 스크립트를 생성하는 CodeFirst API에서 아무것도 찾을 수 없습니다. 모델 가능하기 때문에 가능하다고 확신합니다. 내 DbContext에 대한 API 호출이 데이터베이스를 초기화하는 것을 볼 수는 있지만 실제로 스크립트를 초기화하는 것은 아닙니다.

는 또한 빌드 생성이 스크립트를 갖고 싶어. 그게 발생하는 가장 좋은 방법은 무엇입니까? T4 템플릿을 만들려고 생각하고 Chirpy를 사용하여 빌드를 실행했지만 간단한 솔루션이 있는지 궁금합니다.

답변

2

아니요 현재로서는 그런 가능성이 없습니다. 내 opition 사용자 지정 이니셜 라이저를 만들 수 있습니다. 이니셜 라이저는 데이터베이스를 만들고 SQL Server 관리 개체를 사용하여 데이터베이스에서 스크립트를 만듭니다. 그러나 현재 데이터베이스 서버를 기반으로하는 스크립트 만 작성하므로 SqlCE의 경우 SqlCE 용 스크립트를 사용하게됩니다 (사용 된 SQL 유형에 차이가 있음).

시나리오에 올바른 접근 방식

는 SQL 서버 Express 버전을 설치하고 데이터베이스와 해당 인스턴스를 초기화하는 표준 기능을 사용한다. 그런 다음 데이터베이스에서 스크립트 작성을 사용하거나 Visual Studio 2010 데이터베이스 도구를 사용하여 diff를 작성할 수 있습니다. 스크립트를 제작합니다.

+0

. 최선의 경로는 "SQL Express Database를 만들 수 있습니다"단위 테스트를 작성하는 것입니다. 단위 테스트를 실행할 때마다 로컬 시스템의 SQL Express에서 데이터베이스를 다시 작성합니다. 감사 :) – KallDrexx

2

여전히 찾고있는 모든 사람에게;

하나의 옵션을 사용하면 문자열로 DDL을 생성하고 파일에 저장 얻을 수있다; 내가 두려워 무엇

string sqlscript = (context as IObjectContextAdapter).ObjectContext.CreateDatabaseScript();