У меня есть модели, которые выглядят так:
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?