当前位置: 首页 > 面试题库 >

使用EF 6 alpha3 Code First部署到SQL Azure时出错,并且创建__MigrationHistory表的迁移

郤飞英
2023-03-14
问题内容

我首先使用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])
)

任何人都对如何解决此问题有任何想法?

谢谢,


问题答案:

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


 类似资料:
  • 我正在使用Mongck迁移Spring Boot应用程序中的数据。Spring Boot应用程序在本地运行良好。但在docker上运行时,会发生以下错误: 在此处查看完整日志 这是文件中build.gradle依赖项: 以及MongockConfig类的内容: 我不明白为什么它在docker上运行时不起作用。我的mongockInitializingBeanRunner方法是否不正确。 谁来帮帮我

  • 我已经尝试了很多东西来部署这个功能,安装和卸载节点多次和更多的尝试,但它仍然给我同样的错误。我试图实现的是使用agora-Access令牌包生成令牌使用Firebase函数代码是: 错误是: ===部署到'xxxx'... 我部署函数运行命令: npm--prefix"$RESOURCE_DIR"run lint 皮棉。 函数:完成预部署脚本的运行。i函数:确保启用所需的APIcloudfunct

  • 我试图使用boto3创建一个Dynamodb表。但我得到以下错误: "botocore.exceptions.ClientError:调用CreateTable操作时出错(ValidationExcture):无效的KeySchema:第一个KeySchemaElement不是HASH键类型" 更多信息:我的帐户中没有任何全局表。 我试过的代码:

  • org.h2.jdbc.jdbcsqlsyntaxerrorexception:SQL语句“create TABLE HIBERNATE_SEQUENCE(NEXT_VAL BIGINT)engine=[*]myisam”中存在语法错误;应为“标识符”

  • 我一直试图将Java应用程序部署到OpenShift JBoss7服务器上,由于我使用的是比JBoss7(4.0.1)更新的Hibernate(4.3.4)版本,所以我将较新的JAR包含到: null 我在这里漏掉了什么?我一直在搜索,但找不到这样的东西...求求你,救命!

  • Tomcat日志文件显示: 严重:向类org的侦听器实例发送上下文初始化事件时发生异常。springframework。网状物上下文ContextLoaderListener组织。springframework。豆。工厂BeanCreationException:创建名为“accountDetailsService”的bean时出错:调用init方法失败;嵌套异常为java。lang.NoSuch