Uploaded image for project: 'OSAMES ORM'
  1. OSAMES ORM
  2. ORM-29

Amélio DbManager sur traçage d'une erreur

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Analyzed
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 0.1.0
    • Fix Version/s: 0.3.0
    • Component/s: None
    • Labels:
      None

      Description

      Motivation

      Aide au diagnostic : en cas d'erreur SQL, pouvoir lire dans le log la valeur de la commande SQL comme actuellement mais aussi la liste des valeurs des paramètres pour identifier l'échec de l'exécution. En effet, SqlLite en particulier ne réalise pas cette remontée d'information.

      Contexte

      DbManager, SqlLite avec erreur SQL, aide au diagnostic développeur.

      Acteurs

      Appel de l'ORM avec erreur SQL.

      Modifications à réaliser

      Dans DbManager, créer une méthode ParameterValuesToString().
      Elle prend en paramètre un des 3 formats des paramètres ADO.NET et retourne une chaîne de ce style : "[1] valeur du premier paramètre [2] valeur du 2e paramètre...".

      Pour gérer le fait que ces paramètres ont 3 formats différents, se baser sur :
      http://repositories.osames.org/projects/OS/repos/orm/browse/OsamesMicroOrm/PrepareCommandHelper.cs#61 : on passe un paramètre dynamic et il part dans une des 3 versions avec un type précis, au runtime.

      Dans le catch des exceptions d'exécution, appeler cette méthode ParameterValuesToString().
      Prévoir une nouvelle méthode FormatAndTraceSqlError() d'après le code ci-dessous pour formater une chaîne reprenant le nom et la valeur des paramètres.

      Unable to find source-code formatter for language: csharp. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      ConfigurationLoader._loggerTraceSource.TraceEvent(TraceEventType.Critical, 1, string.Format("{0} Command was: {1}, params count: {2}", ex, cmdText_, command.Parameters.Count));
      

      Plan de test

      Dans des tests unitaires :

      • (appel bas niveau) appeler DbManager en passant trop peu de paramètres
      • (appel haut niveau) réaliser un insert en passant une chaîne de texte au lieu d'un numérique, pour un champ DB numérique. Pour cela, créer une classe entité qui ne corresponde pas tout à fait au mapping existant.
      • (appel haut niveau) voir pour faire un insert avec une valeur requise laissée à NULL.

      Plan de test supplémentaire - alternatif

      -

      Remarque - Commentaire

      -

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              Unassigned
              Reporter:
              babs Barbara Post
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated: