2011-05-03 3 views
8

Global.asax 있음EF4 코드 사용하기 먼저 데이터를 잃지 않고 모델을 변경할 수 있습니까?

Database.SetInitializer<myDbSupport> 
    (new DropCreateDatabaseIfModelChanges<myDbSupport>()); 

만약 내가이 모델을 변경하면 sdf 데이터베이스가 올바른 구조를 가지고 있지 않습니다. dev 환경에서는 괜찮습니다.하지만 프로덕션 환경으로 이동하고 DB 구조 업데이트를 원할 경우 물론 테이블을 삭제하고 데이터를 잃을 여유가 없습니다.

변경된 구조로 모델을 배치하기 전에 DB 변경 사항을 스크립팅하고이 업데이트를 실행할 수 있습니까?

+0

나는 아이디어가 정말 마음에 든다. 나는 db migrate 명령으로 파이썬과 루비 세계에서 지금 일어나고 있다고 생각한다. –

답변

12

초기화 프로그램은 개발 용입니다. 필자는 프로덕션 데이터베이스를 응용 프로그램에서 악으로 직접 변경하는 자동 프로세스를 고려합니다. 다른 사람은 단순히 그 존재를 잊어 버려서 단일 .dll을 다시 배포하면 데이터베이스가 사라집니다.

데이터베이스 업그레이드는 응용 프로그램 유지 관리 중에 업그레이드 스크립트, 설치 패키지 또는 수동 업그레이드의 일부로 별도로 실행해야하며 새 버전을 처음 요청하는 동안에는 수행하지 않아야합니다. 어제 I described migration

내 대답은 내 링크 된 답변에서 생성 된 외부 스크립트를 실행하는 사용자 정의 인니 이저입니다. 스크립트를 두 번 실행하지 않는 추가 검사를 많이 포함하면 부분적으로 작동 할 수 있습니다. 하지만 왜? 스크립트를 작성한 후에는 일단 스크립트를 실행하면됩니다.

+1

안녕하세요, 응답 해 주셔서 감사합니다. 동의합니다. DB가 자동으로 업데이트되는 것을 원하지 않습니다. 이것은 내가 일어나기를 멈추려 고하는 것입니다. prod DB를 내 Dev DB와 동일하게 수동으로 업데이트한다면 예상대로 작동해야합니까? – JAG

관련 문제