我正在尝试使用 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/