5

我正尝试使用EF Code Migrations创建索引。该指数看起来像:EF 4.3使用CreateIndex和匿名参数进行代码迁移

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?如何正确使用匿名参数?

回答

7

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

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

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