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

Lors d'un update, ajouter en option la relecture

    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

      En base de données, il peut y avoir un trigger qui a pour effet de mettre à jour une ou des données de l'enregistrement venant d'être traité pour update.

      Typiquement c'est déplacer un peu de complexité de la couche applicative vers la couche DAO.

      Exemples :

      • date de dernière mise à jour
      • somme de plusieurs valeurs vers une autre
      • gestion centralisée d'une valeur qui est impactée par plusieurs scénarii de modification des données (l'âge d'une personne au moment d'un examen dépend de sa date de naissance et de la date d'un examen, or les deux peuvent être modifiés, l'un dans la même table, l'autre dans une autre table). Ici l'usage est un export des données depuis la DB en ayant l'âge présent dans la DB, avec une couche applicative simplifiée.

      Contexte

      Avec l'ORM, il faudrait pouvoir récupérer vers l'objet qu'on met à jour (exemple : Customer) les valeurs qu'on vient de mettre à jour et les valeurs que la base de données a modifiées en complément.

      Ceci reste cependant une option pour des questions de performance.

      Il faudrait une adaptation de la méthode Update<T> qui retourne l'objet mis à jour, relu complètement, dans le paramètre dataObject_.

      Method uint Update<T>(T dataObject_, string sqlTemplateName_,...)
        uint Update<T>(List<T> dataObjects_, string sqlTemplateName_, ..)
      File osamesmicroorm\dbtools\dbtoolsupdates.cs
      Concerns Nouvelle méthode uint UpdateAndReload<T>(T dataObject_, string sqlTemplateName_,...)

      Acteurs

      ORM, code client, base de données.

      Plan de test

      • Définir en base de données une colonne "dateMiseAJour" pour le Customer, et définir le trigger qui positionne la date courante dans cette colonne.
      • Rédiger le test unitaire qui met à jour vers la table concernée avec la méthode UpdateAndReload et réalise un assert sur les valeurs dans l'objet inséré.
      • Ce test unitaire est à faire pour sqlite et mssql.

      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: