添加非聚簇索引时实体框架等待超时

时间:2017-12-10 13:02:20

标签: c# entity-framework

这很烦人。我使用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。

0 个答案:

没有答案