SaveChangesAsync() виси в EF Core 3.1

VS 2019 ASP.NET Core 3.1 EF Core 3.1 Web API

Имам следната структура на таблица в моята SQL база данни:

въведете описание на изображението тук

Позволявам на потребителите да „редактират“ шаблона (да променят действия/групи). Когато записват, изтривам всички деца на шаблона и добавям отново новите деца (предадени в DTO клас). Кодът е:

   var now = DateTime.UtcNow;

    var template = await _context.Template
        .Include(t => t.TemplateCell)
        .Include(t => t.TemplateGroup)
        .ThenInclude(t => t.TemplateCell)
        .Include(t => t.TemplateAction)
        .ThenInclude(t => t.TemplateCell)
        .FirstOrDefaultAsync(t => t.Id == dto.Id);

    // Updates the templates details
    template.Name = dto.Name;
    template.Description = dto.Description;
    template.InitialRisk = dto.InitialRisk;
    template.ModifiedWhen = now;
    template.ModifiedByUserId = user.Id;

    // Clear the old children
    template.TemplateCell
        .Clear();
    template.TemplateAction
        .Clear();
    template.TemplateGroup
        .Clear();

    // Add the new children
    int sortOrder = 0;
    foreach (var groupName in dto.GroupNames)
    {
        template.TemplateGroup
            .Add(new TemplateGroup
            {
                Name = groupName,
                SortOrder = sortOrder++
            });
    }

    sortOrder = 0;
    foreach (var actionName in dto.ActionNames)
    {
        template.TemplateAction
            .Add(new TemplateAction
            {
                Name = actionName,
                SortOrder = sortOrder++
            });
    }

    int cellIndex = 0;
    foreach (var group in template.TemplateGroup)
        foreach (var action in template.TemplateAction)
            template.TemplateCell
                 .Add(new TemplateCell
                 {
                     TemplateGroup = group,
                     TemplateAction = action,
                     IsEnabled = dto.Cells[cellIndex++]
                 });

    await _context.SaveChangesAsync();  // Does not seem to ever return from here?

    return template.Id;

Стига до await _context.SaveChangesAsync() и изглежда никога не се връща от този метод. SQL Profiler не показва активност.

Може ли някой да види какво може да причинява проблема?


person Rob L    schedule 20.12.2019    source източник


Отговори (1)


Успях да го накарам да работи, но нямам представа защо трябваше да изтрия нещата "два пъти"...

    _context.TemplateCell.RemoveRange(template.TemplateCell);
    _context.TemplateAction.RemoveRange(template.TemplateAction);
    _context.TemplateGroup.RemoveRange(template.TemplateGroup);

    template.TemplateCell
        .Clear();
    template.TemplateAction
        .Clear();
    template.TemplateGroup
        .Clear();
person Rob L    schedule 21.12.2019