0

Entity Framework 코드 첫 번째 MigrateDatabaseToLatestVersion 클래스로 만든 데이터베이스를 구성해야합니다.여기서 CREATE DATABASE 문은 Entity Framework 코드에서 처음으로 마이그레이션과 함께 생성됩니까?

size 또는 maxsize와 같은 데이터베이스 파일 매개 변수에 영향을 줄 수 있습니까? 특히 데이터베이스 파일을 추가하는 방법이 있습니까?

Entity Framework에서 CREATE DATABASE 문을 생성하고 약간 영향을주는 순간을 찾아야한다고 가정합니다. 지금까지 데이터베이스가 이미 있으므로 SqlServerMigrationSqlGenerator 클래스가 너무 늦었습니다.

답변

0

편집 :이 작동하지 않습니다 언급에 따르면 : 당신은 그냥 Add-Migration 명령을 사용하여 코드를 기반으로 마이그레이션을 추가하고 Sql("ALTER DATABASE ...")을 실행하고 당신이 당신의 데이터베이스와 가장 원하는 일을 할 수있는 그 Up 방법을 수정할 수 있습니다 .

데이터베이스는 DbProviderServices (EF와 특정 데이터베이스 서버 간의 브리징 구성 요소)을 통해 생성됩니다. ObjectContext은 데이터베이스 생성 및 데이터베이스 생성 스크립트 생성을위한 작업을 노출합니다. DbMigratorUpdate을 실행할 때 데이터베이스 생성 작업을 사용하십시오. 데이터베이스가 있는지 확인하고 그렇지 않으면 ObjectContext.CreateDatabase을 사용하는지 확인합니다. 따라서 데이터베이스를 만드는 과정을 변경하려는 경우 Update 메서드가 데이터베이스를 생성하는 방법을 변경하기 위해 마이 그레이터의 구현을 직접 구현해야합니다 (아마도 DbMigrator.Update 작업을 실행하기 전에 데이터베이스를 만드는 데코레이터가 필요할 수도 있습니다) .

+0

정말 그렇게 늦게 데이터베이스를 변경할 수 있습니까? (마이그레이션 클래스의 Up 기능에서). 빠른 테스트에서 "_ALTER DATABASE 문을 여러 문에서 사용할 수없는 트랜잭션 _"예외가 발생했습니다 ... –

+0

테스트하지 않았지만 제대로 작동해야합니다. 따라서 두 번째 설명 된 솔루션이이를 수행하는 유일한 방법 일 수 있지만 기본이 아닌 마이그레이션 도구를 호출하는 초기화 도구를 사용해야합니다. –

+0

필자가 이해하는 한, MigrateDatabaseToLatestVersion 클래스를 상속 받아야하는 중요한 마이그레이션 메커니즘 인 InitializeDatabase가 상속 용이하지 않은 것처럼 마이그레이션 메커니즘을 다시 작성하면 기본 마이그레이션 메커니즘이 필요하지 않습니다. 현재 해결 방법은 외부 스크립트에서 빈 데이터베이스를 만들고이 테이블과 테이블과 함께 채우는 것입니다. –