gpt4 book ai didi

entity-framework - 使用 EF 6 alpha3 Code First 和 Migrations 创建 __MigrationHistory 表部署到 SQL Azure 时出错

转载 作者:行者123 更新时间:2023-12-04 08:33:15 30 4
gpt4 key购买 nike

我首先使用 EF 6 alpha 3 代码。
当我尝试在运行 Update-Database 命令的 SQL Azure 上创建数据库时,出现以下错误:

此版本的 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])
)

任何人都知道我该如何解决这个问题?

谢谢,

最佳答案

这是一个 bug在 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)
{
}
}

关于entity-framework - 使用 EF 6 alpha3 Code First 和 Migrations 创建 __MigrationHistory 表部署到 SQL Azure 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15248037/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com