我正在尝试使用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方法有一个覆盖,它接受一个名为anonymousArguments的东西。我无法找到关于它的更多信息所以我尝试了类似的东西:
CreateIndex("Users",
new string[] { "RatingId", "CreatedAt" },
false,
"IX_RatingId_CreatedAt",
new { INCLUDE = "(Id, Email, DomainId)" });
没有例外,但它没有用。
是否可以使用CreateIndex方法创建上述索引,还是必须使用Sql方法在迁移中写出T-SQL?如何正确使用匿名参数?
答案 0 :(得分:7)
匿名参数是特定于提供者的。据我所知,MSSQL提供商并未使用它们(如果我错了,请纠正我。)
CreateIndex没有内置的重载来处理包含的列。要么必须回退到手动SQL,要么可以在所有列上创建索引。
CreateIndex("Users",
new string[] { "RatingId", "CreatedAt", "Id", "Email", "DomainId" },
false,
"IX_RatingId_CreatedAt"
);