На моей странице инвентаризации у меня есть асинхронный вызов, который ищет все продукты инвентаризации пользователя в зависимости от параметры поиска (Поиск вызывается каждый раз, когда пользователь вводит букву в поле ввода поиска). Кажется, я получаю эту ошибку, когда поисковый запрос вызывается несколько раз за короткий промежуток времени:
"вторая операция была запущена в этом экземпляре контекста до завершения предыдущей операции"< /p>
Вот моя конфигурация базы данных:
Код: Выделить всё
builder.Services.AddDbContext(options =>
{
options.UseSqlServer(builder.Configuration.GetConnectionString("NimaDbConnection"));
});
Код: Выделить всё
services.AddScoped();
services.AddScoped();
Код: Выделить всё
private async Task SearchUserInventoryProducts(int pageNumber)
{
PaginationFilter.PageNumber = pageNumber;
UserInventoryProductMappings = await _userInventoryProductMappingService
.SearchByUserInventoryId(PaginationFilter, UserInventory.UserInventoryId);
}
Код: Выделить всё
public async Task
> SearchByUserInventoryId(PaginationFilter paginationFilter, int userInventoryId)
{
var result = await _repository.SearchByUserInventoryId(_mapper.Map(paginationFilter), userInventoryId);
return _mapper.Map(result);
}
Код: Выделить всё
public async Task
>
SearchByUserInventoryId(PaginationQuery query, int userInventoryId)
{
try
{
var defaultQuery = GetDefaultQuery().Where(x => x.UserInventoryId == userInventoryId);
if (query.SearchString != null)
{
defaultQuery = defaultQuery.Where(x => x.Product.NameLabel.LabelDescriptions.Any(x => x.Description.Contains(query.SearchString)));
}
if (query.SortBy != null && query.SortById != null)
{
switch (query.SortBy)
{
case "productCategory":
defaultQuery = defaultQuery.Where(x => x.Product.ProductCategoryId == query.SortById);
break;
case "productSubCategory":
defaultQuery = defaultQuery.Where(x => x.Product.ProductSubCategoryId == query.SortById);
break;
}
}
int count = defaultQuery.Count();
return new PagedResponse
{
Data = await defaultQuery
.Skip((query.PageNumber - 1) * query.PageSize)
.Take(query.PageSize)
.ToListAsync(),
PageNumber = query.PageNumber,
PageSize = query.PageSize,
TotalPages = (int)Math.Ceiling(count / (double)query.PageSize)
};
}
catch (Exception e)
{
_logger.LogError(e, e.Message);
throw;
}
}
Подробнее здесь: https://stackoverflow.com/questions/734 ... uses-error
Мобильная версия