entity-framework - 使用 Entity Framework 6 迁移创建索引

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

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

  • 至少降一列
  • 包括其他栏目
  • ?

    它必须产生这样的东西:
    CREATE NONCLUSTERED INDEX [IX_IndexName] ON [dbo].[TableName]
    (
        [Column1] ASC,
        [Column2] DESC
    )
    INCLUDE ([Column3], [Column4])
    

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

    我也知道可以让我的迁移执行任意 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");
    }
    

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

    关于entity-framework - 使用 Entity Framework 6 迁移创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21192603/

    相关文章:

    c# - 重构C#entity framework 6项目使用依赖注入(inject)进行拖地

    mysql - 在一个表上添加多个索引对插入有害吗?

    python - 使用 numpy 进行多维索引的最佳方法是什么?

    c# - 如何使用 Entity Framework 4.1 Code First 为数据库中的一对多关系强制建立一对一关系

    c# - 获取 EF 投影中从刻度转换的 TimeSpan 的 TimeSpan 属性

    c# - 无法使用 EF 交换两行上的唯一值

    c# - 在移动服务数据库上启用代码优先迁移时出错

    c# - 升级到 Entity Framework 4.3.1 后未处理的异常

    c# - EF 在更新中缺少 where 子句

    SQL Server 2008 R2 将 CONVERT_IMPLICIT tinyint 转换为位