Campos float e real não funciona em meu serviço rest

25/08/2017

0

Fiz um serviço REST com C#. Ele vai ao banco e pega algumas informações para ser consumido em um App Android. O que passa é que o serviço, quando se trata de campos float, ele dá esse erro:

System.InvalidOperationException: 'The specified cast from a materialized 'System.Double' type to the 'System.Single' type is not valid.'


Esse é o método que pega no banco(Sql Server)
public List<LiberacaoDTO> getAutoriza(int idorcamento)
        {
            var lista = contexto.Liberacoes
                        .Where(lib => lib.IdOrcamento == idorcamento)
                        .Select(lib => new LiberacaoDTO
                        {
                            TipoVenda = lib.TipoVenda,
                            IdOrcamento = lib.IdOrcamento,
                            //Vencimento = lib.Vencimento,
                            //Juros = lib.Juros,
                            MaxComi = lib.MaxComi,
                            DataRetorno = lib.DataRetorno,
                            //Entrada = lib.Entrada,
                            //Acrescimo = lib.Acrescimo,
                            //Desconto = lib.Desconto,
                            Mensagem = lib.Mensagem,
                            //DataLib = lib.DataLib,
                            Vendedor = lib.Vendedor,
                            Cliente = lib.Cliente,
                            Filial = lib.Filial
                        }).ToList();

            return lista;
        }


Esse é meu serviço:
public class LiberacaoController : ApiController
    {
        AutorizadorContext contexto = new AutorizadorContext();
        PedidoLiberacao liberacao = new PedidoLiberacao();

        [AcceptVerbs("Get")]
        public IEnumerable<LiberacaoDTO> getLiberacao()
        {
            return liberacao.getAutoriza(1000012093).AsEnumerable().ToList();
            //return contexto.Liberacoes.AsEnumerable().ToList();
         }
    }
Pjava

Pjava

Responder

Posts

25/08/2017

Pjava

Percebi que por mais que eu declare em minha model o tipo float ou double ou até Double, o Entity está entendendo que eu tenho um tipo Single e ao pegar no banco o tipo float, ele diz que não é possível a conversão. O que passa que não sei o que fazer, já que é uma interpretação do Entity, assim penso eu.
Responder

31/08/2017

Pjava

Não, sei não, mas tem a ver com alguma informação que eu preciso enviar e não sei. Veja o mapeamento que eu fiz no meu DTO. Chegou a funcionar e agora não funciona:
public LiberacaoItensDTO()
        {
            Mapper.Initialize(cfg =>
            {
                cfg.CreateMap<LiberacaoItensDTO, Liberacao>()
                .ForMember(d => d.DataLib, opt => opt.MapFrom(src => Convert.ToDateTime(DataLib)));
                cfg.CreateMap<LiberacaoItensDTO, Liberacao>()
                .ForMember(d => d.Juros, opt => opt.MapFrom(src => Juros.ToString("C2")));
                cfg.CreateMap<LiberacaoItensDTO, Liberacao>()
                .ForMember(d => d.Desconto, opt => opt.MapFrom(src => Desconto.ToString("C2")));
                cfg.CreateMap<LiberacaoItensDTO, Liberacao>()
                .ForMember(d => d.Acrescimo, opt => opt.MapFrom(src => Acrescimo.ToString("C2")));
                cfg.CreateMap<LiberacaoItensDTO, Liberacao>()
               .ForMember(d => d.Vencimento, opt => opt.MapFrom(src => Convert.ToDateTime(Vencimento)));
                cfg.CreateMap<LiberacaoItensDTO, Liberacao>()
                .ForMember(d => d.Entrada, opt => opt.MapFrom(src => Entrada.ToString("C2")));

                cfg.CreateMap<LiberacaoItensDTO, ItensLib>()
                .ForMember(d => d.Qtde, opt => opt.MapFrom(src => Qtde.ToString("C2")));
                cfg.CreateMap<LiberacaoItensDTO, ItensLib>()
                .ForMember(d => d.Unitario, opt => opt.MapFrom(src => Unitario.ToString("C2")));
                cfg.CreateMap<LiberacaoItensDTO, ItensLib>()
                .ForMember(d => d.Custo, opt => opt.MapFrom(src => Custo.ToString("C2")));
                cfg.CreateMap<LiberacaoItensDTO, ItensLib>()
                .ForMember(d => d.CustoDiario, opt => opt.MapFrom(src => CustoDiario.ToString("C2")));
                cfg.CreateMap<LiberacaoItensDTO, ItensLib>()
                .ForMember(d => d.UltCondicao, opt => opt.MapFrom(src => UltCondicao.ToString("C2")));
                cfg.CreateMap<LiberacaoItensDTO, ItensLib>()
                .ForMember(d => d.Total, opt => opt.MapFrom(src => Total.ToString("C2")));
            });
        }
        public int IdLiberacao { get; set; }
        [DefaultValue(0)]
        public int IdOrcamento { get; set; }
        [DefaultValue(0)]
        public int IdVendedor { get; set; }
        public string Vendedor { get; set; }
        public int IdFilial { get; set; }
        public string Filial { get; set; }
        [DefaultValue(0)]
        public float DataLib { get; set; }
        public int IdCliente { get; set; }
        public string Cliente { get; set; }
        public string TipoVenda { get; set; }
        [DefaultValue(0)]
        public float Juros { get; set; }
        [DefaultValue(0)]
        public float Desconto { get; set; }
        [DefaultValue(0)]
        public float Vencimento { get; set; }
        [DefaultValue(0)]
        public float Acrescimo { get; set; }
        [DefaultValue(0)]
        public float Entrada { get; set; }
        public string Mensagem { get; set; }
        public int IdProduto { get; set; }
        public string Produto { get; set; }
        [DefaultValue(0)]
        public float Qtde { get; set; }
        [DefaultValue(0)]
        public float Unitario { get; set; }
        [DefaultValue(0)]
        public float Custo { get; set; }
        [DefaultValue(0)]
        public float CustoDiario { get; set; }
        [DefaultValue(0)]
        public float UltCondicao { get; set; }
        [DefaultValue(0)]
        public float Total { get; set; }
    }
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar