entity-framework - 带有 CreateIndex 和匿名参数的 EF 4.3 代码迁移

标签 entity-framework ef-code-first entity-framework-4.3 entity-framework-migrations

我正在尝试使用 EF 代码迁移创建索引。索引看起来像:

CREATE INDEX [IX_RatingId_CreatedAt] ON [Users] 
(
[RatingId] ASC,
[CreatedAt] ASC
)
INCLUDE (Id, Email, DomainId)

我到目前为止的代码是:
CreateIndex("Users",
             new string[] { "RatingId", "CreatedAt" },
             false,
             "IX_RatingId_CreatedAt"
           );

这将为我创建索引,但不包括列。 CreateIndex 方法有一个覆盖,它接受一个叫做匿名参数的东西。我真的找不到那么多关于它的信息,所以我尝试了类似的方法:
CreateIndex("Users",
             new string[] { "RatingId", "CreatedAt" },
             false,
             "IX_RatingId_CreatedAt",
             new { INCLUDE = "(Id, Email, DomainId)" });

没有异常(exception),但它没有用。

是否可以使用 CreateIndex 方法创建上述索引,还是必须使用 Sql 方法在迁移中写出 T-SQL?如何正确使用匿名参数?

最佳答案

匿名参数旨在特定于提供者。据我所知,MSSQL 提供程序没有使用它们(如果我错了,请纠正我)。

处理包含的列的 CreateIndex 没有内置重载。要么您必须退回到手动 SQL,要么您可以在所有列上创建索引。

CreateIndex("Users",
         new string[] { "RatingId", "CreatedAt", "Id", "Email", "DomainId" },
         false,
         "IX_RatingId_CreatedAt"
       );

关于entity-framework - 带有 CreateIndex 和匿名参数的 EF 4.3 代码迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10489743/

相关文章:

database-migration - 数据库版本部署。 Entity Framework 迁移与SSDT DacPacs

c# - Entity Framework 代码首先使用 Where 子句更新

entity-framework - 使用和不使用带有 DbContext [代码优先] 的 using 语句有什么区别?

entity-framework - EF 4.1 Code First 多个结果集

c# - 为什么没有更新相当于 WillCascadeOnDelete?

c# - 将对象图添加到 DbContext

c# - 是否可以表达检查约束?

c# - Entity Framework 6 - Group by then Order by the First() 花费的时间太长

c# - EF Core 添加迁移调试

c# - 使用 Fluent Api 定义可选的自引用一对多关系