【问题标题】:Creating indexes with Entity Framework 6 Migrations使用 Entity Framework 6 迁移创建索引
【发布时间】:2014-02-07 04:18:03
【问题描述】:

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

  • 至少下降一列
  • 包括其他列
?

它必须产生这样的东西:

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

我在这个主题上找到了an article,但它提供了一个相当麻烦的解决方案。可能自撰写本文以来,某些方面有所改善。

我也知道让我的迁移执行任意 SQL 代码的能力,但我真的希望能够使用某个版本的 CreateIndex 方法,它为我完成所有脏活,而不是自己编写 SQL 代码。

【问题讨论】:

  • 我发现了重复的文章。 stackoverflow.com/questions/25293161/…
  • @KimKiWon,谢谢!虽然我的帖子较旧,但奇怪的是,有人收到了更多答案 :) 它们看起来确实很有用,所以任何路过的人请点击上面的链接。一个问题是我的问题也是关于 INCLUDE 的,但我认为那里提供的解决方案也可以扩展到支持 INCLUDE。

标签: entity-framework indexing ef-code-first sql-server-2012 entity-framework-6


【解决方案1】:

我刚刚遇到了同样的问题,目前它似乎不是迁移 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");
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2019-01-11
    • 2014-07-20
    • 2023-03-03
    相关资源
    最近更新 更多