Как добавить дерево данных в БД используя EF Core

у меня еcть DTO

public record CategoryDto
{
    public string Name { get; set; } = null!;

    public string Url { get; set; } = null!;
    
    public int Parent { get; set; }

    public IReadOnlyList<CategoryDto> Childs { get; set; } = Array.Empty<CategoryDto>();
}

Есть сущность

[Table("t_category")]
public class Category : BaseEntity,
    IHasUniqueName
{
    [MaxLength(255)]
    public string Name { get; set; } = null!;

    [MaxLength(255)] 
    public string Url { get; set; } = null!;
    
    public int? ParentId { get; set; }
    
    public Category? Parent { get; set; }

    public ICollection<Category> Children { get; set; } = Array.Empty<Category>();
}

DTO я получаю со стороннего сайта м не нужно эту DTO преобразовать в сущность и добавить в базу. Как это сделать? Как используя средства EF Core добавлять такие данные?

Сервис который я набросал, тут думаю сформировать сущность и вызвав метод Insert у репозитория просто добавть данные

public class CategoryService : ICategoryService
{
    private readonly ICategoryRepository _categoryRepository;
    private readonly ICategoryParser _categoryParser;
    private readonly IMapper _mapper;

    public CategoryService(ICategoryRepository categoryRepository,
        ICategoryParser categoryParser,
        IMapper mapper)
    {
        _categoryRepository = categoryRepository;
        _categoryParser = categoryParser;
        _mapper = mapper;
    }

    public async Task InitAsync(CancellationToken cancellationToken = default)
    {
        var dtos = await _categoryParser.GetAllAsync(cancellationToken);

        foreach (var dto in dtos)
        {
            var category = _mapper.Map<Category>(dto);
            await _categoryRepository.InsertAsync(category, cancellationToken);

            if (dto.Childs.Any())
                //await AddChildrenAsync(category.Id, dto.Childs);
        }
    }
}

Ответы (0 шт):