developer tip

엔터티 프레임 워크 코드 우선-프로덕션 데이터베이스에 대해 Update-Database를 실행하는 방법

copycodes 2020. 11. 12. 08:24
반응형

엔터티 프레임 워크 코드 우선-프로덕션 데이터베이스에 대해 Update-Database를 실행하는 방법


프로덕션 데이터베이스에 대해 'Update-Database'명령을 실행하는 방법을 알고 싶습니다.

'Update-Database'데이터베이스는 내 로컬 컴퓨터에서 제대로 작동하지만 프로덕션 데이터에 대해 작동하도록하려면 어떻게해야합니까?

따라서 내 응용 프로그램을 변경 한 다음 Visual Studio를 통해 '게시'를 실행하면 코드 측면에서는 잘 작동하지만 프로덕션 데이터에 대해 'Update-Database'명령을 어떻게 실행합니까?

이 질문이 이해되기를 바랍니다 ...

감사,


@David가 이미 말한 것을 추가하려면 ...

개인적으로 저는 automatic updates'실시간'시나리오를 신뢰하지 않으며 항상 수동 데이터베이스 관리를 선호합니다 (예 : permissions공유 호스팅 등은 말할 것도없고 Db를 생성하거나 변경 하는 문제가 있습니다). 그러나 내가 본 것에서 마이그레이션은 동기화와 관련하여 매우 견고합니다 (사실 일반적으로 '완전'하는 유일한 방법은 Db를 제거하고 전체 / 새로 업데이트를 강제하는 것입니다).

저는 여기에 얼마 전에 만든 게시물입니다 방법 scriptsynchronize database / code및 배포 시나리오 (때 문제가 발생)에 맞도록. (아직) 적용되지는 않지만 명심해야 할 사항입니다.

MVC3 및 Code First 마이그레이션- " 'blah'컨텍스트를 지원하는 모델이 데이터베이스가 생성 된 이후 변경되었습니다."


Entity Framework가 초기화 될 때 애플리케이션이 데이터베이스를 자동으로 업데이트하도록 프로덕션에서 Entity Framework (코드 우선) 마이그레이션 사용을 참조하십시오 .

이제 마이그레이션을 수동으로 제어하는 ​​것이 더 편하다면 개발자 컴퓨터에서 Update-Database 명령에 -Script 인수를 사용하여 프로덕션 데이터베이스에 대해 실행할 수있는 SQL 스크립트를 생성 할 수 있습니다.

http://msdn.microsoft.com/en-us/data/jj591621.aspx(SQL 스크립트 가져 오기 섹션 참조)


당신은 단지 하시겠습니까 자동으로 최신 버전 이제까지 당신의 응용 프로그램이 실행 (개발 및 생산)에 대한 데이터베이스를 업데이트?

자동 마이그레이션을 신뢰할 수 있고 데이터베이스를 수동으로 마이그레이션하는 것이 불가능한 매우 간단한 시나리오를 제외하고는 이것은 좋은 생각이 아닐 수 있습니다. 이 답변을 참조하십시오 : https://stackoverflow.com/a/15718190/2279059 . 이 경고를 무시하면 계속 읽으십시오.

다음에 다음을 추가하십시오 web.config.

<entityFramework>
<contexts>
  <context type="MyAssembly.MyContext, MyAssembly" disableDatabaseInitialization="false">
    <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyAssembly.MyContext, MyAssembly], [MyAssembly.Migrations.Configuration, MyAssembly]], EntityFramework" />
  </context>
</contexts>

이것은 무섭게 보일 수 있지만 기본적으로 다음 코드와 동일합니다.

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());

운이 좋지 않다면 web.config이 코드를에 넣을 수도 있습니다 Global.asax. 개인적으로 코드보다 구성을 선호합니다.

구성 파일이 더 깔끔하게 보이 MigrateDatabaseToLatestVersion도록하려면 템플릿 클래스 에서 새 클래스를 파생 시켜 web.cofig파일 에서 유형 인수를 전달하는 데 암호 구문을 사용할 필요가 없습니다 .

public class MyDatabaseInitializer : public MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration> {}

이것이하는 일은 데이터베이스를 최신 버전으로 자동 업데이트하는 데이터베이스 이니셜 라이저를 설정하는 것입니다.

(출처 및 자세한 내용 : http://www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html )

참고 URL : https://stackoverflow.com/questions/15715292/entity-framework-code-first-how-to-run-update-database-for-production-database

반응형