public async Task<BaseUpdateModel<KernelProductionDto>> Save(KernelProductionDto dto)
        {
            var entity = dto.Id.IsNullOrEmpty() ? new KernelProduction() : await Session.LoadAsync<KernelProduction>(dto.Id);

            SetUpdateText(dto);

            Mapper.Map(dto, entity);
            UpdateAuditInfo(entity);

            var lot = await Session.LoadAsync<Lot>(dto.LotId);
            if(lot==null)
                throw new NotFoundException($"Lote {dto.LotId.ToLotNumber()} não existe");

            entity.Product = await Session.LoadAsync<Product>(dto.ProductId);

            if (entity.Product==null)
                throw new NotFoundException($"Produto com Id {dto.ProductId.FromRavenId()} não existe");

            await Session.StoreAsync(entity);
            await Session.SaveChangesAsync();

            dto.Id = entity.Id;

            return new BaseUpdateModel<KernelProductionDto>(dto, $"{UpdateText} produção de {(await Session.LoadAsync<Product>(dto.ProductId)).Name}",true);
        }
        public async Task<KernelProductionDto> GetById(string id)
        {
            if (id.IsNullOrEmpty())
                throw new ArgumentNullException(nameof(id));

            var entity = await Session.LoadAsync<KernelProduction>(id);

            if(entity==null)
                throw new NotFoundException($"O produção de amendoas com Id {id.FromRavenId()} não existe");

            var dto = new KernelProductionDto
            {
                Id = entity.Id,
                ProductId = entity.Product.Id,
                LotId = entity.LotId,
                Date = entity.Date,
                QuantityKg = entity.QuantityKg
            };

            return dto;
        }