none
Entity Framework - Como tratar uma exception informando quando não há conexão com o Banco de Dados RRS feed

  • Pergunta

  • Olá pessoal!

    Desculpem pela simplicidade da pergunta, mas estou iniciando com o entity framework...

    O entity framework conecta-se automaticamente com o BD. Digamos que minha aplicação já estivesse em produção, rodando no cliente... A conexão com o servidor caiu e o cliente vai executar a aplicação... Claro que seria necessário tratar isso em um try catch, mas eu poderia ter vários tipos de erro: Um insert com valor com um tipo de dado errado, um erro relacionado a problema de conexão com o banco, etc...  

    Minha dúvida é a seguinte:

    Como faço para tratar uma falha de conexão com o BD usando o EF?

    Abraço a todos!

    quarta-feira, 23 de novembro de 2016 17:34

Respostas

  • Jalber,

    Você pode testar a conexão ao invés de optar por tratar a exceção, desta forma:

    using (DatabaseContext dbContext = new DatabaseContext())
    {
         dbContext.Database.Exists();
    }

    Mas se quiser tratar a exceção, terá que usar o tipo DbException e verificar qual o ErrorCode que costuma ser retornado caso o banco esteja inacessível.


    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".

    • Marcado como Resposta JR-Master quinta-feira, 24 de novembro de 2016 10:02
    quarta-feira, 23 de novembro de 2016 17:41
  • Olá Jalber,

    Eu recomendaria fazer o try...catch de qualquer forma, pois sua conexão pode cair durante a execução ou algo do gênero e recomendaria usar o Exception genérico ou utilizar vários catch específicos, já que o erro pode variar. Dessa forma:

    try
    {
       //Seu código
    }
    catch(SqlException sqlEx)
    {
      MessageBox.Show(sqlEx.Message);
    }
    catch(Exception ex)
    {
      MessageBox.Show(ex.Message);
    }
    


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta JR-Master quinta-feira, 24 de novembro de 2016 10:02
    quarta-feira, 23 de novembro de 2016 17:51

Todas as Respostas

  • Jalber,

    Você pode testar a conexão ao invés de optar por tratar a exceção, desta forma:

    using (DatabaseContext dbContext = new DatabaseContext())
    {
         dbContext.Database.Exists();
    }

    Mas se quiser tratar a exceção, terá que usar o tipo DbException e verificar qual o ErrorCode que costuma ser retornado caso o banco esteja inacessível.


    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".

    • Marcado como Resposta JR-Master quinta-feira, 24 de novembro de 2016 10:02
    quarta-feira, 23 de novembro de 2016 17:41
  • Olá Jalber,

    Eu recomendaria fazer o try...catch de qualquer forma, pois sua conexão pode cair durante a execução ou algo do gênero e recomendaria usar o Exception genérico ou utilizar vários catch específicos, já que o erro pode variar. Dessa forma:

    try
    {
       //Seu código
    }
    catch(SqlException sqlEx)
    {
      MessageBox.Show(sqlEx.Message);
    }
    catch(Exception ex)
    {
      MessageBox.Show(ex.Message);
    }
    


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta JR-Master quinta-feira, 24 de novembro de 2016 10:02
    quarta-feira, 23 de novembro de 2016 17:51