3

먼저 EF 6 알파 3 코드를 사용하고 있습니다. 나는 다음과 같은 오류 얻을 업데이트-Database 명령 실행 SQL 애저의 데이터베이스를 만들려고 할 때 : 클러스터 된 인덱스가없는EF 6 alpha3 코드를 사용하여 SQL Azure로 배포하는 중 첫 번째 오류 및 __MigrationHistory 테이블을 만드는 마이그레이션

테이블이 버전의 SQL Server에서 지원되지 않습니다. 클러스터 된 색인을 생성하고 다시 시도하십시오.

오류를 __MigrationHistory 테이블 만들기 sql 명령으로 추적했습니다.

CREATE TABLE [dbo].[__MigrationHistory] (
    [MigrationId] [nvarchar](255) NOT NULL, 
    [ContextKey] [nvarchar](512) NOT NULL, 
    [Model] [varbinary](max) NOT NULL, 
    [ProductVersion] [nvarchar](32) NOT NULL, 
    CONSTRAINT [PK_dbo.__MigrationHistory] PRIMARY KEY NONCLUSTERED ([MigrationId], [ContextKey]) 
) 

누구나 어떻게이 문제를 해결할 수 있습니까? 이 알파 3의 bug입니다

답변

13

감사합니다, - 불편을 끼쳐 드려 죄송합니다.

1) 사용자 정의 마이그레이션 SQL 생성기 만들기 :

public class AzureSqlGenerator : SqlServerMigrationSqlGenerator 
{ 
    protected override void Generate(CreateTableOperation createTableOperation) 
    { 
     if ((createTableOperation.PrimaryKey != null) 
      && !createTableOperation.PrimaryKey.IsClustered) 
     { 
      createTableOperation.PrimaryKey.IsClustered = true; 
     } 

     base.Generate(createTableOperation); 
    } 
} 

2) 마이그레이션 구성에서 사용자 정의 생성기를 등록

internal sealed class Configuration : DbMigrationsConfiguration<MyContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 

     SetSqlGenerator("System.Data.SqlClient", new AzureSqlGenerator()); 
    } 

    protected override void Seed(MyContext context) 
    { 
    } 
} 
+0

는 것 같다을 아주 쉽게 해결 방법은

최신 비트로 고정 감사!! –

+1

너겟 패키지 (alpha 3)로 고정 되었습니까? –

+1

여전히 너겟 패키지의 문제가 있습니다. 또한 업그레이드하기 전에 이미 __MigrationHistory 테이블이있는 경우 테이블을 삭제해야만 작동합니다. 내 프로젝트에서 Migrations 폴더를 삭제하고 Enable-Migrations을 다시 실행 한 다음 SetSqlGenerator 호출을 추가하여 작동했습니다. – Tom