这很烦人。我使用EF创建了一个索引迁移,如下所示:
// Add indexes
modelBuilder.Entity<Message>().HasIndex(m => new { m.Reference, m.Type, m.Status, m.DateCreated }).HasName("IX_MessageSearch");
modelBuilder.Entity<Email>().HasIndex(m => new { m.DateCreated, m.Subject, m.To }).HasName("IX_EmailSearch");
我尝试运行update-database
,但我一直收到等待超时错误。
我尝试了几个修复程序(将工具&gt;选项&gt;设计器超时更改为900并确保覆盖连接字符串中有一个勾号),但这不起作用。
所以我补充道:
Database.CommandTimeout = 900;
我仍然有错误。看起来它忽略了它,因为错误会在60秒内发生。
所以我想我会评论我的迁移Up
方法操作:
public override void Up()
{
//CreateIndex("dbo.Emails", new[] { "DateCreated", "Subject", "To" }, name: "IX_EmailSearch");
//CreateIndex("dbo.Messages", new[] { "Reference", "Type", "Status", "DateCreated" }, name: "IX_MessageSearch");
}
使用SQL Server Management Studio手动创建索引。每张表中有超过100k的记录,这就是为什么我想出来的原因。
无论如何,手动创建工作,然后我调用了update-database
来使迁移更新。
但是当我尝试使用我的API获取电子邮件(或消息)列表时,我收到此错误:
找不到方法:&#39; System.Data.Entity.ModelConfiguration.Configuration.IndexConfiguration System.Data.Entity.ModelConfiguration.EntityTypeConfiguration
1.HasIndex(System.Linq.Expressions.Expression
1&gt;)&#39;。
有谁知道为什么?我使用的是EF 6.2。