使用Entity Framework 6 Migrations创建索引

有没有办法使用实体框架代码优先迁移在MS SQL Server数据库中创建索引,如果索引必须是:

  • 降序至少一列
  • 包括其他栏目
  • 它必须产生这样的东西:

    CREATE NONCLUSTERED INDEX [IX_IndexName] ON [dbo].[TableName]
    (
        [Column1] ASC,
        [Column2] DESC
    )
    INCLUDE ([Column3], [Column4])
    

    我在这个主题上找到了一篇文章,但它提供了一个相当麻烦的解决方案。 自文章撰写以来,可能有所改进。

    我也意识到能够让我的迁移执行任意的SQL代码,但我真的希望能够使用某种版本的CreateIndex方法,它为我完成所有肮脏的工作,而不是自己编写SQL代码。


    我刚刚遇到同样的问题,它似乎目前不是迁移API的一部分。 我的解决方法只是为了向上迁移执行sql并使用DropIndex方法进行向下迁移。

    public override void Up()
    {
        Sql("CREATE NONCLUSTERED INDEX IX_IndexName ON TableName ([Column1], [Column2] DESC) INCLUDE ([Column3], [Column4])");
    }
    
    public override void Down()
    {
        DropIndex("TableName", "IX_IndexName");
    }
    

    它并不漂亮,可以整理成可重用的方法/扩展等,但它可以完成这项工作。

    链接地址: http://www.djcxy.com/p/77057.html

    上一篇: Creating indexes with Entity Framework 6 Migrations

    下一篇: Format of an HTTP get request