IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Créer un objet à partir d'une BDD


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 246
    Points : 123
    Points
    123
    Par défaut Créer un objet à partir d'une BDD
    Bonjour à toutes et à tous,

    Soit une base de données Access contenant une table "Parcelles", une table "Lignes" et une table "Points".
    Soit une application à développer en Framework 3.5.
    Je voudrais créer un objet Parcelle, contenant lui-même des objets Lignes qui contiennent des objets Points.
    Je me pose des questions au niveau des modifications et du retour des données à la BDD.
    Je me demande comment faire pour garder les données d'origine, que ce soit pour faire une "remise à 0" de l'objet ou pour faire les requêtes de mises à jour, pour lesquelles il faut évidemment les données d'origine (l'équivalent du DataRowVersion.Original).
    Aussi, comment faire pour le problème des concurrences et pour déterminer les lignes modifiées ou créées ?
    Peut-être que mes critères de recherche ne sont pas bon, mais je ne trouve rien sur le sujet, or j'imagine que je ne dois pas être le premier avec ce besoin.

    Merci de vos z'avis z'avisés,
    JM

  2. #2
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Bonjour,

    Et pourquoi ne pas travailler avec le DataSet que vous semblez déjà connaitre ?

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Une sokution parmi d'autres : on pourra systématiquement conserver dans les dataRow la version originale correspondant à la base de donnée (les dataRow n'étant modifiées qu'au moment de l'update du SGBD) et gérer dans les objets la version courrante modifiée sans se préoccuper des DataRow originales jusqu'au moment oiù on veut appliquer les mises à jour.




    On procédera ainsi
    • Mettre dans toutes les Tables de la BDD une clé primaire (non modifiable) pour assurer la correspondance entre objets et DataRow.
    • Créer la fonction TheDataRow=GetDataRow(PrimaryKey) renvoyant null lorsque la primary est null , ce qui indique un objet nouvellement créé,
    • Créer la fonction TheObject=DataRowToObject(TheDataRow) et la fonction inverse TheDataRow=ObjectToDataRow(TheObject) ,
    • Créer la fonction générique AreDataRowEquals(TheDataRow1,TheDataRow2) qui comparera toutes les colonnes des 2 DataRow.
    • Créer une fonction générique IsObjectModified(TheObject). Le code de IsObjectModified(TheObject) est simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsModified=AreDataRowEquals(GetDataRow(TheObject.PrimaryKey),ObjectToDataRow(TheObject))
    Les fonctions"génériques" sont valables quellle que soit la DataTable.

    Pour les suppressions, on pourra par exemple gérer une liste de PrimaryKeys correspondant aux objets supprimés.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 246
    Points : 123
    Points
    123
    Par défaut
    Merci Graffito,

    Ça me semble une piste très intéressante. Je vais zieuter de ce côté.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/12/2014, 11h10
  2. créer un objet à partir du type d'une collection
    Par dams78 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 03/11/2008, 14h08
  3. Delphi - FireBird - Instanciation d'objets à partir d'une BDD
    Par nowayyy36 dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/06/2007, 15h21
  4. [Listview] Remplissage à partir d'une bdd mysql
    Par Cybher dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/07/2005, 09h32
  5. Réponses: 5
    Dernier message: 24/06/2005, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo