none
The specified cast from a materialized 'System.String' type to a nullable 'System.Int32' type is not valid. RRS feed

  • Pergunta

  • Caros, bom dia.

    Estou tendo um erro relativamente comum mas num contexto bastante improvável.

    "The specified cast from a materialized 'System.String' type to a nullable 'System.Int32' type is not valid."

    Desenvolvi um serviço WebApi,  este serviço acessa uma procedure(SQL Server) que alimenta uma entidade mapeada na aplicação e retorna por fim os dados serializados.

    O erro em questão acontece quando a procedure é chamada. A procedure basicamente cria uma tabela temporária com os formatos de campos iguais aos da entidade que receberá os valores, sendo que 3 colunas em formato integer no alimentam três atributos da minha entidade  com formato int?. Duas destas três colunas não geram erro, apenas a ultima coluna gera o erro.

    Resumindo:

    A coluna retornada pela proc no formato Integer, quando vai preencher o campo do tipo int? dentro da minha entidade no código gera o erro: 

    "The specified cast from a materialized 'System.String' type to a nullable 'System.Int32' type is not valid."

    informações a se levar em conta:- a ultima coluna,  que gera erro, tem exatamente os mesmos dados da penultima coluna que não gera erro.

    - Já tentei mudar os valores retornados por esta coluna , e o erro é sempre o mesmo.

    - a tabela que consulto na base para preencher esta tabela temporaria também tem as colunas com formato

    100% fiel aos da tabela temporaria e da entidade.

    Obrigado!


    quinta-feira, 30 de março de 2017 12:37

Respostas

  • Juliano, obrigado pela atenção, mas o problema ja foi solucionado.

    Foi falta de atenção minha. A proc nca estava dropando a tabela temporária, o que fazia com que o formato inicial deste campo que era string, continuasse gerando erro.


    quinta-feira, 30 de março de 2017 13:07

Todas as Respostas

  • Ricardo, 

    Pode exibir código, tipos das colunas e algum exemplo de retorno?


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quinta-feira, 30 de março de 2017 12:49
  • Juliano, bom dia.

    Segue a entidade ( o erro é relacionado ao campo 'Temperatura2' do sql: 

            [Column("placa")]
            public string Placa { get; set; }
            [Column("Data")]
            public DateTime Data { get; set; }
            [Column("Latitude")]
            public string Latitude { get; set; }
            [Column("Longitude")]
            public string Longitude { get; set; }
            [Column("Velocidade")]
            public int? Velocidade { get; set; }
            [Column("Ignicao")]
            public bool? Ignicao { get; set; }
            [Column("Temperatura1")]
            public int? Temperatura { get; set; }
            [Column("Temperatura2")]
            public int? Temperatura2 { get; set; }


    a declaração da tabela temporária na proc:

    					create table ##resultado
    					(
    						Placa varchar(8)
    					,	Data datetime
    					,	Latitude varchar(100)
    					,	Longitude varchar(100)
    					,	Velocidade integer
    					,	Ignicao bit
    					,	Temperatura1 integer
    					,	Temperatura2 integer
    					)

    Segue print da estrutura da tabela onde faço um select para alimentar a temporária (em teste fazendo select em outras tabelas com estrutura semelhante o erro não acontece)

    Obrigado!!

    quinta-feira, 30 de março de 2017 12:57
  • Juliano, obrigado pela atenção, mas o problema ja foi solucionado.

    Foi falta de atenção minha. A proc nca estava dropando a tabela temporária, o que fazia com que o formato inicial deste campo que era string, continuasse gerando erro.


    quinta-feira, 30 de março de 2017 13:07
  • Perfeito. Valeu pelo feedback.

    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quinta-feira, 30 de março de 2017 13:17