4

MVC5와 함께 Entity Framework 5를 사용하는 프로젝트에서 작업 중입니다. 내 프로젝트가 현재 실행 중입니다. 테이블에 열을 추가하려고합니다. 그러나 EF에서 모델에 필드를 추가하면 데이터베이스를 삭제하고 다시 만들 수 있다는 것을 알았으므로 그럴 수 없습니다. 코드 마이그레이션을위한 한 가지 방법이 있습니다. 그러나 관리자는 큰 데이터베이스 프로젝트 때문에 사용하지 못하게합니다.EF5에서 MVC5로 Db를 업데이트하십시오.

도와 주시겠습니까?

답변

1

처음 엔 Entity Framework에서 코드를 사용하기 시작할 때 나는 같은 상황이었습니다. 나는 항상 Update-Database -F을 실행하고 있었고 모든 테이블을 삭제하고 재 작성하는 것을 보았습니다. 심지어 필드의 이름을 바꾸는 것과 같은 간단한 작업이었습니다.

데이터베이스 버전 지정은 어렵지만 명명 된 마이그레이션을 사용하면 훨씬 쉽습니다 (코드 마이그레이션을 참조 할 때 의미하는 바를 생각해보십시오). 당신의 상사가 그 아이디어에 반대한다는 것을 압니다 만, 그것은 매우 유연합니다.

는 기본적으로 기본 명령으로 당신을 위해 구성 클래스를 스캐 폴딩 것이다 패키지 관리자 콘솔 및 엔티티 프레임 워크에 Add-Migration -Name xxx을 실행 (모두 Up()Down()를 버전 관리)이 때 Update-Database를 실행합니다. 명령이 마음에 들지 않으면 명령을 변경할 수 있습니다. 필요한 경우 주변에서 데이터를 이동할 수도 있습니다 (약간의 문제가 있습니다).

네 가지 옵션을 사용할 수 있다고 생각합니다.

  • 사용 코드 최초의 자동 마이그레이션 :이 순간에 무엇을, 그리고 당신이 데이터베이스를 업데이트 할 때 발생하는 이상 충분한 제어를 제공하지 않습니다. 프로젝트의 초기 단계에서 시작하는 것이 좋지만 제작 후에는 다루기 힘들어집니다.
  • 코드 이니셜 마이 그 레이션 : Configurations을 통해 필요한 제어 기능을 제공하지만 사장님이 사용하지 못하도록 사용하고 있습니다. 코드 이니셜 마이 그 레이션을 사용하십시오.
  • 데이터베이스 우선 접근을 사용하십시오. 데이터베이스 우선을 사용하면 기존 데이터베이스에서 모델을 리버스 엔지니어링 할 수 있습니다. 따라서 변경해야 할 경우 먼저 데이터베이스를 변경 한 다음 EF를 사용하여 모델을 재생성하십시오. 이것은 일반적으로 DBA가 선호하지만, 기존 프로젝트의 일부 측면을 다시 구현했음을 의미 할 수도 있습니다.
  • 엔티티 프레임 워크를 사용하지 마십시오 : 상사가 받아 들일 수있는 SQL 쿼리로 돌아갈 수 있으며 필요한 유연성을 제공 할 수는 있지만 그런 종류의 고통이 필요합니까?

더 도와 드릴 수 있는지 알려주세요.

+0

안녕하세요, 저는 어떤 프로세스 마이그레이션을 수행할지 묻습니다. 마찬가지로 기존 db의 백업을 만들고 db 구조의 updation 후에 다시 복원 하시겠습니까? 아니면 그냥 _migrationtable 또는 무엇을 업데이 트합니까? – sagar43

+0

현재 프로덕션 환경에있는 데이터베이스를 업데이트하는 최선의 방법을 묻고 있습니까? –

관련 문제