WEBAPI NÃO INSERE REGISTRO

 Tópico anterior Próximo tópico Novo tópico

WEBAPI NÃO INSERE REGISTRO

C#

 Compartilhe  Compartilhe  Compartilhe
#485270 - 08/11/2018 10:00:22

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Bom dia pessoal!!
De tanto o Kerplunk insistir em WebApi, finalmente estou tendo tempo para estudar e vendo os vídeos cheguei na parte 4 onde estou tentando executar o método Post, porém não sei onde estou errando e não está inserindo nada.
Notem que na imagem aparece o resultado da variável resposta como 'No Content'.

Alguém, ou o próprio Kerplunk poderia me dar um help?

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#485274 - 08/11/2018 14:34:34

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Mostre o seu método de POST, estou achando que ele retorna "void", por isso o retorno 204 - No Content

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#485275 - 08/11/2018 14:36:26

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Além disso, para testar eu sugiro o Postman. Nos vídeos, fiz usando client porque mais tenho idéia de usar BDD.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#485303 - 09/11/2018 07:58:18

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Método Post:

// POST: api/Cifras
        public IHttpActionResult Post([FromBody] Indice value)
        {
            try
            {
                value.Insert();
            }
            catch (Exception)
            {
                throw;
            }
            return Ok();
        }
  


Método GetInsertCommand:
public SqlCeCommand GetInsertCommand()
        {
            SqlCeCommand _return = new SqlCeCommand();
            _return.CommandText = "Insert Into {0} ({1}) Values ({2})";

            string tabela = typeof(T).Name;
            string campos = "";
            string valores = "";

            foreach (PropertyInfo pro in typeof(T).GetProperties().ToList().Where(p => p.GetCustomAttribute(typeof(DataObjectFieldAttribute)) != null))
            {
                campos += pro.Name + ", ";
                valores += "@" + pro.Name + ",";
                if (pro.GetValue(this) == null)
                {
                    _return.Parameters.AddWithValue("@" + pro.Name, DBNull.Value);
                }
                else
                {
                    _return.Parameters.AddWithValue("@" + pro.Name, pro.GetValue(this));
                }
            }
            campos = campos.Substring(0, campos.Length - 2);
            valores = valores.Substring(0, valores.Length - 1);
            _return.CommandText = string.Format(_return.CommandText, tabela, campos, valores);
            return _return;
        }
  


No método Post eu deveria colocar:
try
{
    value.GetInsertCommand();
}

??

Tentei assim e me retorna uma exceção:
An exception of type 'System.Net.Http.HttpRequestException' occurred in ConsumindoWebApi.exe but was not handled in user code

Additional information: An error occurred while sending the request.


Inner Exception: "Impossível conectar-se ao servidor remoto".


____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#485307 - 09/11/2018 09:38:24

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Você pegou FIO E PAVIO do que coloquei nos vídeos...

GetInsertCommand, simplesmente retorna um SqlCommand com um comando Insert e seus parâmetros, mas não executa. Executar o comando em si, é uma das tarefas no fluxo de Insert(método abstrato da sua classe).
Faça a depuração no seu método POST.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#485308 - 09/11/2018 09:42:14

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Além disso, apesar de ser possível usar aquilo tudo em algo em produção, tem alternativas bem melhores. Há que se entender que os vídeos são muito mais para aprendizado e entendimento do que simplesmente para dar código fonte pronto que é o que a maioria espera e um dos motivos de não querer mais fazer os vídeos.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#485356 - 12/11/2018 14:13:13

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Kerplunk, desculpa a demora em responder, pois é, eu sei que aqueles vídeos são só para aprendizado, inclusive aprendi muito com eles, mas hoje só uso Entity Framework, não uso aquilo tudo que foi aprendido nos videos, só abri o topico, pois na sua explicação o registro estava inserindo, mas no meu teste eu não consegui o mesmo resultado,
Mas agora eu vou partir pra outra "tarefa", quero implementar uma classe de crud que seja genérica onde eu possa simplesmente passar o objeto (classe) que preciso manipular e o crud seja feito, exatamente como naquele método BackWork , só que usando Entity Framework. Depois então criar uma WebApi de uma aplicação e consumi-la usando esses métodos de crud.
Creio que seja possível, e gostaria da opinião sua e dos demais colegas e na medida do possível me ajudar nessa nova etapa.
Agradeço desde já a quem puder me ajudar.

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#485358 - 12/11/2018 15:22:03

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Se você vai usar o EF, nem precisa uma outra classe para crud, ele é o próprio crud. À menos que você queira fazer camadas de abstração genéricas, mas daí a coisa complica significativamente, você está falando de BDD e DDD e isso é assunto que estende para semanas à fio...

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#485359 - 12/11/2018 15:44:09

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009



Que pena Kerp, seria algo como
isto aqui

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#485361 - 12/11/2018 17:05:53

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Isso é um padrão repositório, é meio chato de trabalhar com ele, mas bem em voga ultimamente.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#485364 - 12/11/2018 18:25:24

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Então, mas eu não posso fazer isso com uma WepApi?
Assim, no CRUD, eu passaria somente o objeto...

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário