У меня есть база данных с иерархией категорий. У каждой категории есть parentcategoryid. Я вызываю следующую функцию для загрузки категорий верхнего уровня, а затем она рекурсивно вызывает себя для загрузки всех дочерних элементов.
Однако я получаю следующую ошибку:
SqlException: новая транзакция не разрешена, потому что есть другие
потоки, запущенные в сеансе.
public async Task LoadCategoriesAsync()
{
await LoadCategoriesByParentId(null);
}
private async Task LoadCategoriesByParentId(int? sourceParentId, int? parentId)
{
var sourceCategories = _dbContext.SourceCategory.Where(c => c.ParentCategoryId == sourceParentId);
foreach (var sourceCategory in sourceCategories)
{
var newCategory = new Category()
{
Name = sourceCategory.Name,
Description = sourceCategory.Description,
ParentCategoryId = parentId
};
_dbContext.Category.Add(newCategory);
await _dbContext.SaveChangesAsync();
//category.EntityId = newCategory.Id;
//_dbContext.SourceCategory.Update(category);
//await _dbContext.SaveChangesAsync();
await LoadCategoriesByParentId(sourceCategory.CategoryId, newCategory.Id);
}
}