Я сталкиваюсь со знаменитой ошибкой "В этом контексте запущена вторая операция до того, как предыдущая операция завершена" в моем проекте.
Я знаю причину, по которой это происходит, потому что я вызываю тот же метод ( GetPersons()
) на странице Razor, чтобы загрузить четыре ComboBox. Вот моя инфраструктура / data-> context:
public class PlaygroundBiRepository : IPlaygroundBiRepository
{
private readonly PlaygroundBiContext _context;
public PlaygroundBiRepository(PlaygroundBiContext context) => _context = context;
#region Person
public async Task<Person> GetPersonByIdAsync(int id) => await _context.Persons.FindAsync(id);
public IQueryable<Person> GetPersons() => _context.Persons;
public async Task<PersonRole> GetPersonRoleByIdAsync(int id) => await _context.PersonRoles.FindAsync(id);
public IQueryable<PersonRole> GetPersonRoles() => _context.PersonRoles;
public async Task<Role> GetRoleByIdAsync(int id) => await _context.Roles.FindAsync(id);
public IQueryable<Role> GetRoles() => _context.Roles;
# endregion
}
После прочтения кое-где я не вижу простого решения этой проблемы. Мне придется потерять DI в контексте, если я хочу использовать новый каждый вызов.
ServiceLifetime.Transient
не работает, и цепочка вызовов не async
Любые указатели, пожалуйста.