使用EF 6 alpha3 Code First部署到SQL Azure犯错,创造__MigrationHistory
技术问答
239 人阅读
|
0 人回复
|
2023-09-14
|
我首先使用EF 6 alpha 3代码Update-Database命令的SQL Azure创建数据库时,出现以下错误:2 T# K V/ q9 _2 C$ S
此版本的SQL Server不支持没有聚集索引的表格。请创建一个聚集索引,然后重试。6 p3 m$ u; K) I' A
我跟踪到__MigrationHistory表创建sql命令错误。% I- w, Y8 J1 w: f1 M
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]))任何人都对如何解决这个问题有任何想法?) ~% K1 x! W" c/ \( L& g2 m# R
谢谢,- e' n2 e5 T) n. P4 x0 n6 d
, U% S, [) `: W1 a
解决方案:
4 }3 N# U: o+ H. {8 N& L. S+ s$ ~ 这是Alpha 3中的错误-请原谅不便。4 z6 J' o+ B7 G/ ?
有一个非常简单的解决方法:
4 u6 T, v: ?" n" d5 I% ^* Y G1)创建自定义迁移SQL生成器:
* R& N. R4 W* hpublic class AzureSqlGenerator : SqlServerMigrationSqlGenerator{ protected override void Generate(CreateTableOperation createTableOperation) if ((createTableOperation.PrimaryKey != null) && !createTableOperation.PrimaryKey.IsClustered) createTableOperation.PrimaryKey.IsClustered = true; base.Generate(createTableOperation); 2)在您的迁移配置中注册自定义生成器:: H" ^+ `7 i+ H4 D d% P/ X
internal sealed class Configuration : DbMigrationsConfiguration public Configuration() AutomaticMigrationsEnabled = true; SetSqlGenerator("System.Data.SqlClient",new AzureSqlGenerator();protected override void Seed(MyContext context) }} |
|
|
|
|
|