Ошибка при развертывании на SQL Azure с использованием EF 6 alpha3 Code First и Migrations, создающих таблицу __MigrationHistory

azure-sql-database entity-framework entity-framework-6

Вопрос

Сначала я использую EF 6 alpha 3. Когда я пытаюсь создать базу данных на SQL Azure, выполняющую команду Update-Database, я получаю следующую ошибку:

Таблицы без кластерного индекса не поддерживаются в этой версии SQL Server. Создайте кластерный индекс и повторите попытку.

Я отыскал ошибку в команде sql для создания таблицы __MigrationHistory.

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])
)

Кто-нибудь имеет представление о том, как я могу решить эту проблему?

Благодаря,

Принятый ответ

Это ошибка в Alpha 3 - Извините за неудобства.

Существует довольно простой способ:

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)
    {
    }
}


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему