public Task <JobServiceMaterialLinkDto> Handle(CreateNewJobServiceMaterialLinkCommand request, CancellationToken cancellationToken) { var jobService = _ctx.JobServices.Where(s => s.ServiceId == request.ServiceId).FirstOrDefault(); var materialLists = request.MaterialLists.ToList(); var jobMaterials = new List <JobMaterial>(); var newMaterialLists = new List <MaterialList>(); foreach (var list in request.MaterialLists) { var allMaterialListItems = new List <MaterialListItem>(); foreach (var m in list.MaterialListItems) { var material = _ctx.JobMaterials.Where(jm => jm.MaterialId == m.MaterialId).FirstOrDefault(); var newMaterialListItem = new MaterialListItem() { MaterialId = material.MaterialId, JobMaterialId = material.Id }; allMaterialListItems.Add(newMaterialListItem); } list.MaterialListItems = allMaterialListItems; newMaterialLists.Add(list); } var newJobServiceMaterialLink = new JobServiceMaterialLink() { Active = request.Active, Name = request.Name, ServiceId = request.ServiceId, ServiceCode = jobService.Code, MaterialLists = newMaterialLists }; _ctx.JobServiceMaterialLinks.Add(newJobServiceMaterialLink); _ctx.SaveChanges(); return(Task.FromResult <JobServiceMaterialLinkDto>(_mapper.Map <JobServiceMaterialLinkDto>(newJobServiceMaterialLink))); }