有没有办法使用Entity Framework Code First Migrations在MS SQL Server数据库中创建索引,如果索引必须是:
它必须产生这样的东西:
CREATE NONCLUSTERED INDEX [IX_IndexName] ON [dbo].[TableName]
(
[Column1] ASC,
[Column2] DESC
)
INCLUDE ([Column3], [Column4])
我在这个主题上找到了an article,但它提供了一个非常繁琐的解决方案。可能,自撰写文章以来,某些内容已有所改进。
我也知道能够使我的迁移执行任意SQL代码,但我真的希望能够使用某些版本的CreateIndex
方法,它为我做了所有脏工作而不是编写SQL代码自己。
答案 0 :(得分:4)
我刚遇到同样的问题,而且它目前似乎不是迁移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");
}
它不漂亮,可以整理成可重复使用的方法/扩展等,但它可以完成这项工作。