1
resposta

ADO .net não consegue reconhecer todas as colunas retornadas da storage procedure

Olá, Gostaria de uma ajuda em relação ao ADO .net first database. Esse são os campos retornados na SP, dtEmissao e cdFilial tive que incluir para se adequar a necessidade.

Quando dou um exec nessa SP no sql management studio o resultado vem conforme o esperado.

 select 
    codigo, 
    nmProduto, 
    apelido, 
    dsClasse, 
    dsGrupo, 
    dsSubGrupo, 
    EstAtual, 
    UnidItem1, 
    Unidade, 
    nmPlano,
    dtEmissao,
    sum(qtItem1) as qtItem1, 
    sum(qtde) as qtde, 
    sum(qtTotal) as qtTotal, 
    sum(qtTotal1) as qtTotal1, 
    sum(vlTotal) as vlTotal,
    sum(vlTotalSemIPI) as vlTotalSemIPI, 
    sum(vlContabilSC) as vlContabilSC, 
    sum(vlContabilSemIPISC) as vlContabilSemIPISC, 
    sum(Total) as Total, 
    sum(TotalSemIpi) as TotalSemIPI, 
    sum(ContabilSC) as ContabilSC, 
    sum(ContabilSemIpiSC) as ContabilSemIpiSC, 
    sum(vlIPI) as vlIPI, 
    sum(vlST) as vlST, 
    sum(IPI) as IPI, 
    sum(ST) as ST,
    cdfilial as codEmpresa

Quando vou para o projeto em .net e peço para o visual studio fazer o modelo a partir do mando de dados ele só retornas esses campos :

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace ProelHospitalarDataAccess
{
    using System;

    public partial class spRelC123_Result
    {
        public int codigo { get; set; }
        public string nmProduto { get; set; }
        public string apelido { get; set; }
        public string dsClasse { get; set; }
        public string dsGrupo { get; set; }
        public string dsSubGrupo { get; set; }
        public Nullable<decimal> EstAtual { get; set; }
        public string UnidItem1 { get; set; }
        public string Unidade { get; set; }
        public string nmPlano { get; set; }
        public Nullable<decimal> qtItem1 { get; set; }
        public Nullable<decimal> qtde { get; set; }
        public Nullable<decimal> qtTotal { get; set; }
        public Nullable<decimal> qtTotal1 { get; set; }
        public Nullable<decimal> vlTotal { get; set; }
        public Nullable<decimal> vlTotalSemIPI { get; set; }
        public Nullable<decimal> vlContabilSC { get; set; }
        public Nullable<decimal> vlContabilSemIPISC { get; set; }
        public Nullable<decimal> Total { get; set; }
        public Nullable<decimal> TotalSemIPI { get; set; }
        public Nullable<decimal> ContabilSC { get; set; }
        public Nullable<decimal> ContabilSemIpiSC { get; set; }
        public Nullable<decimal> vlIPI { get; set; }
        public Nullable<decimal> vlST { get; set; }
        public Nullable<decimal> IPI { get; set; }
        public Nullable<decimal> ST { get; set; }
    }
}

já tentei por na mão os outros campos mas não funciona como o esperado. Porque o visual studio não consegue reconhecer esses campos que inclui alterando a SP ?

1 resposta

Olá, Ismael! Tudo bem com você?

Peço desculpas pela demora no retorno a sua mensagem.

Uma solução para o cenário que você apresentou é atualizar o modelo do Entity Framework para que ele reflita as alterações feitas na sua stored procedure.

Para fazer isso, devemos seguir os seguintes passos:

  1. Abrir o arquivo do modelo do Entity Framework (.edmx) no Visual Studio.
  2. Clicar com o botão direito do mouse em uma área vazia do designer do modelo e selecione "Atualizar Modelo a partir do Banco de Dados".
  3. Na janela de atualização, verificar se a stored procedure que alteramos está selecionada e clicar em "Concluir" para atualizar o modelo.

Após realizar esses passos, o Entity Framework deve atualizar o modelo para incluir os campos adicionais da nossa stored procedure.

Caso isso não funcione, pode ser necessário verificar se as alterações na stored procedure foram salvas corretamente no banco de dados.

Todavia, vale ressaltar que como você postou sua pergunta há algum tempo é possível que a constante evolução da tecnologia impacte na resolução da sua dúvida. Sendo assim, caso queira se aprofundar neste tema e com conteúdos atualizados, recomendo os materiais abaixo:

Espero ter ajudado.

Abraços e bons estudos!