Обновление с удалением и созданием коллекции свойств сущностей с использованием Entity Framework Core в веб-интерфейсе - PullRequest
1 голос
/ 17 января 2020

У меня есть модели, которые выглядят так:

public class Rack
{
    public int Id { get; set; }
    public int RackRow { get; set; }
    public int RackSize { get; set; }
    public int SystemId { get; set; }
    public System System { get; set; }
    public ICollection<Module> Modules { get; set; }
}

public class Module
{
    public int Id { get; set; }
    public byte ModuleSlot { get; set; }
    public string ModuleName { get; set; }
    public int RackId { get; set; }
    public Rack Rack { get; set; }
}

Они связаны реалиями в fluentAPI, например:

modelBuilder.Entity<Entities.Module>().HasOne(entity => entity.Rack).WithMany(entity => entity.Modules).HasForeignKey(entity => entity.RackId);

Теперь у меня есть простая команда обновления в WebApi:

    [HttpPut("systemId"), ActionName("UpdateRack")]
    public async Task<IActionResult> UpdateRack([FromBody]DTO.Rack requestInput, int systemId)
    {
        try
        {
            if (systemId == 0 || !requestInput.Id.HasValue) return StatusCode(StatusCodes.Status403Forbidden);
            var systemEntity = await this.systemService.GetSystem(systemId);
            if (systemEntity == null) return NotFound();

            systemEntity.Racks = this.mapper.Map(new List<DTO.Rack>{requestInput}, systemEntity.Racks);

            return Ok(await this.systemService.Update(systemEntity));
        }
        catch (Exception ex)
        {
            logger.Error(ex);
            return StatusCode(StatusCodes.Status500InternalServerError);
        }
    }

Теперь это работает, но я, когда я удаляю или добавляю что-либо в коллекцию модулей, это не обрабатывается, поэтому мой вопрос в том, способно ли ядро ​​Entity Framework добавлять или удалять записи в операции обновления коллекции enity?

1 Ответ

1 голос
/ 19 января 2020

EF Core все еще может это сделать.

Всего у моей сущности 2 до обновления первой записи и создания новой записи.

После обновления и создания новой обновляется всего 3 и первая запись.

enter image description here

...