我首先使用EF 6 alpha 3代码。当我尝试在运行Update-Database命令的SQL Azure上创建数据库时,出现以下错误:
Update-Database
此版本的SQL Server不支持没有聚集索引的表。请创建一个聚集索引,然后重试。
我跟踪到__MigrationHistory表创建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) { } }