2013-10-02 2 views
1

LINQ to SQL 및 WiX 배포를 사용하여 WPF 프로젝트를 만들고 있습니다.LINQ to SQL 스키마 변경 처리 방법

응용 프로그램의 사소한 업데이트 나 주요 업데이트간에 데이터베이스 스키마 변경을 처리하는 방법을 모르겠습니다.

예를 들어, 배포 된 v1.0.0.0 응용 프로그램을 v1.0.1.0으로 업데이트하는 방법 (기존 스키마에 새 클래스 나 수정 된 클래스)이 필요합니다. 업데이트 된 응용 프로그램을 배포하는 경우 기존 데이터베이스 스키마가 새 코드와 일치하지 않으므로 충돌이 발생합니다.

내 연구에서 단순화 된 프로세스가 Liquibase과 같은 것을 사용하여 v1.0.0.0과 v1.0.1.0 데이터베이스간에 SQL ALTER 스크립트를 생성하고 WiX 업그레이드 중에 이러한 변경 스크립트를 실행하는 것이지만 훨씬 더 정상적으로 처리 할 수있는 '기본 제공 (built-in)'접근 방식이있는 것처럼 보입니다 (Problem with Database Diffs은 많은 확신을 안겨줍니다).

전체적으로 WiX 또는 Visual Studio에서 데이터베이스 변경을 감지/추적/배포 할 수 있습니까? 우리는 (적어도 dev에 세계에서)있는 코드를 변경을 할 때 난 그냥 삭제하고 재창조/런타임에 기본 데이터와의 데이터베이스를 다시 채우기하면 LINQ는 CreateDatabase()를 SQL로 수 있도록 현재 점에 유의해야한다

Edit:

새 코드를 기반으로 스키마를 만듭니다.

SQLMetal을 사용하여 dbml 파일을 생성하는 방법에 대한 언급이 많이 있지만 데이터베이스에 대한 Designer를 사용하지 않고 있습니다. 원하는 경우 '코드 우선'을 수행하고 있습니다. 이것은 내가 혼란스러워하는 곳이다. 그렇다면 이 dbml 메서드를 사용합니까?

Linq to Sql 데이터베이스 동기화 오픈 소스 프로젝트 (CodeProjectCodePlex)를 보았지만 SQL 2012를 지원하지 않으며 타임 스탬프 유형 및 다른 오류를 지원하지 않습니다. 많은 맞춤 설정.

V1을 배포, 'dbv1'로 데이터베이스를 저장 다음과 같이

답변

0

내가 지금 함께 가기로 결정했다 솔루션입니다.

'dbv2'와 같은 데이터베이스를 저장, V2를 배포 및 Visual Studio > SQL > Schema Compare > New Comparison

자료 : 대상 dbv1 : dbv2이 .SQL 스크립트는 다음 윅스 업그레이드 패키지에 포함되어

Generate Script (Shift + Alt + G)

SqlScript 요소로

기존 데이터베이스의 복사본을 비교해야하므로 원하는 것은 아닙니다.하지만 적어도 값 비싼 도구는 필요하지 않습니다.