多次执行后长时间执行LINQ to SQL查询

时间:2018-09-30 18:16:23

标签: linq asp.net-core entity-framework-core

我有一个无法解决的怪异问题。我有一个使用EF Core的ASP.NET MVC Core 2应用程序。我有一个触发动作方法的按钮。单击该按钮,它将重定向到单击另一个按钮的视图,该视图将执行一些数据库操作并将我带回到原始页面。

在该方法中,我仅使用ApplicationDbContext

MyEntry myEntry = _db.MyEntries.FirstOrDefault(e => e.MyProperty == myValue);

问题是,当我多次走那条路时,它会起作用。并且它停止了第八次调用,始终是同一行(正在执行数据库),突然开始大约需要半分钟。

当我修改代码(例如,将一些数据库代码移到循环外,创建集合然后在循环内使用)时,它会在另一时间停止工作-在执行相同的次数后,总是同一行代码,但是一个不同的地方。

任何想法可能有什么问题吗?

我只是在控制器中使用数据库:

private readonly ApplicationDbContext _database;

public MyController(ApplicationDbContext database)
{
   _database = database;
}

ApplicationDbContext是:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

谢谢!

1 个答案:

答案 0 :(得分:0)

感觉MyEntry实体需要一个密钥:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<MyEntry>()
        .HasKey(b => new { b.Id, b.MyProperty});
}