Длинное выполнение запроса LINQ to SQL после нескольких выполнений - PullRequest
0 голосов
/ 30 сентября 2018

У меня странная проблема, которую я не могу решить.У меня есть приложение ASP.NET MVC Core 2, использующее EF Core.У меня есть кнопка, которая вызывает метод действия.Я нажимаю кнопку, она перенаправляет меня в представление, где я нажимаю другую кнопку, которая выполняет некоторые операции с базой данных и возвращает меня на исходную страницу.

И внутри этого метода я просто использую свой 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 голосов
/ 01 октября 2018

Такое ощущение, что сущности MyEntry нужен ключ:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<MyEntry>()
        .HasKey(b => new { b.Id, b.MyProperty});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...