Fórum Campos float e real não funciona em meu serviço rest #585301
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)
Esse é meu serviço:
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
Curtir tópico
+ 0
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
Gostei + 0
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)