我先使用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])
)
任何人都知道如何解决这个问题?
谢谢,
答案 0 :(得分:13)
这是Alpha 3中的bug - 很抱歉给您带来不便。
有一个非常简单的解决方法:
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)
{
}
}