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

L'insert de haut niveau doit modifier l'objet de données plutôt que de retourner son ID

    XMLWordPrintable

    Details

    • Type: Story
    • Status: Analyzed
    • Priority: Critical
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: 0.3.0
    • Component/s: None
    • Labels:
      None

      Description

      Motivation

      Si la table définit une clé primaire auto-incrémentée, après un insert à l'aide de l'API de haut niveau, on récupère l'identifiant unique de l'objet inséré. Il doit être placé dans l'objet passé par le client pour que celui-ci continue à travailler avec son objet, de façon plus intuitive que le code actuel qui renvoie l'identifiant (le code client doit l'assigner à son objet).

      Contexte

      Insert de haut niveau.

      Attention, il va falloir ajouter au XML l'information de quelle est la clé primaire de la table (cas de clé primaire sur une seule colonne).

      Le cas est rare mais peut exister d'une table sans clé primaire dans laquelle on fait des insertions à l'aide de l'api de haut niveau.

      La clé primaire auto-incrémentée doit être définie dans le mapping, en tant que chaîne optionnelle. Proposition : au niveau du tag <orm:Table name="Employee"> ajouter : <orm:Table name="Employee" autoIncrColumn="IdEmployee">

      Acteurs

      Code client de l'orm.

      Plan de test

      1. Mettre à niveau les tests unitaires existants pour qu'ils compilent.
      2. Ajouter un "assert not null" sur la propriété de l'objet qui est l'identifiant, après avoir réalisé l'insert vers une table avec clé primaire auto-incrémentée
      3. Rédiger des tests au besoin pour les cas :
        1. Cas OK : clé primaire non auto-incrémentée et pas d'attribut dans le mapping
        2. Cas avec erreur : clé primaire non auto-incrémentée mais on en a défini une dans le mapping. Doit tracer juste un warning dans le log.
        3. Cas OK : pas de clé primaire en db ni dans le mapping.

      Plan de test supplémentaire - alternatif

      -

      Remarque - Commentaire

      Method long Insert<T>(T dataObject_, string sqlTemplateName_,...)
      File osamesmicroorm\dbtools\dbtoolsinserts.cs
      Concerns Modification de la méthode et de sa signature

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                Created:
                Updated: