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 :

Binding, relations avec une base de données


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Binding, relations avec une base de données
    Bonjour tout le monde !

    Alors voilà, j'ai pour projet de créer un soft de saisi de "Dossier" (je ne vous dis pas de quoi ^^) avec une connexion à une bdd.
    On m'a recommandé d'utiliser des Binding mais je ne sais comment les utiliser.

    J'utilise d'ailleurs aussi Entity que je sais par contre utiliser.

    J'aimerais faire une fenêtre avec tout les champs du Dossier à saisir, créer une Entité Dossier (jusqu'ici tout est fait) ET ! relier les champs aux propriétés du Dossier via le Binding et ainsi faciliter les travail.

    Cependant la dernière étape me fait défaut.
    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Tu veux te lier directement à ta base pour être notifié en cas de changement dans celle-ci ?
    Si oui, selon la base, il existe des dispositifs qui te permettent de monitorer des tables (SQL Server le fait c'est sûr).

    Parce que sinon de ce que tu décris tout me semble déjà fait (je suppose que tu travailles avec WPF où le binding est très utilisé même s'il existe aussi en WinForms) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    View <-- data-binding --> ViewModel <-> DAL
    Une fois que tu as créé ton entité tu l'ajoutes à ton contexte EF et tu save.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    En gros, ce que je veux c'est extraire un Dossier, remplir les champs de la fenêtre automatiquement qui correspondent aux propriétés de ce Dossier dans la base.
    Si il y a modification des champs alors il y a modification des propriétés.

    EDIT : Navré pour l’ambiguïté de mes posts, la sinusite m'empêche de réfléchir correctement ^^'

    Donc, comment faire ce lien dans les fichiers xaml et cs ?

  4. #4
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Là en effet c'est plus clair.
    Alors pour faire le lien il te faut en effet utiliser du data-binding.
    D'abord il faut définir le DataContext de ta vue de dossier, je te conseille d'utiliser l'instance courante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    InitializeComponent();
    DataContext = this;
    Puis si tu as fait du MVVM je suppose que tu as une propriété "Model" qui représente ou encapsule un dossier.
    Dans ton XAML tu as juste à faire :
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    <TextBox Text="{Binding Model.Dossier.Utilisateur.Prenom}" />
    Voilà l'idée générale, à adapter à ton scénario.

    Tu as un tuto intéressant en français ici : http://nathanaelmarchand.developpez....rlight/?page=I
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Et tout en utilisant Microsoft Server et Entity Framework ?

  6. #6
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Oui ça ne change rien à ce niveau : SQL Server et EF constituent ta couche de persistance et d'accès aux données respectivement.
    La couche UI c'est WPF qui est la seule à utiliser le binding pour interagir avec tes entités métiers.

    Si tu as un peu de temps je te conseille de regarder du côté de MVVM pour avoir un design clean et surtout standard pour la partie WPF.
    Mais ce n'est pas obligatoire pour utiliser le binding juste mieux.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Ok ! Donc si je veux relier une TextBox à une propriété de mon Dossier, je dois faire quelque chose comme ça dans le XAML ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Text = {Binding Path=DOSSIER.DOS_DOSSIER_NUM}
    Cependant, j'ai un autre soucis.
    Dans ma base j'ai des relations (encore heureux) sur d'autres tables par exemple :

    DOSSIER.ID_ENFANT = PERSONNE.ID

    Si j'ai créé une TextBox NOM_ENFANT comment faire en sorte que le nom soit bindé dans la table Personne, tout en enregistrant l'ID dans le Dossier ?

  8. #8
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Là c'est un problème de représentation objet : une relation est réifiée en relationnel par une clé étrangère, mais en OO elle est représentée par une référence mémoire vers l'autre objet.

    Et là c'est au niveau du mapping objet-relationnel que ça doit être fait et EF le fait très bien.

    Donc dans ton modèle .Net tu dois avoir quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class Dossier
    {
        ...
        Personne Client { get; set; }
        ...
    }
    Et donc ton binding donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Text = {Binding Path=DOSSIER.Client.Nom}
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

Discussions similaires

  1. [VB.NET] Relation avec une base de données
    Par eagle-ray dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/09/2007, 12h40
  2. Probleme de connexion JDBC avec une base de donne mysql
    Par sultan_kafila dans le forum JDBC
    Réponses: 19
    Dernier message: 12/04/2006, 08h25
  3. Connexion de Delphi avec une base de données Oracle 9i
    Par Price dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/12/2005, 12h38
  4. Gestion des chemins des images avec une base de données...
    Par Nean dans le forum Bases de données
    Réponses: 4
    Dernier message: 27/07/2005, 08h08
  5. probleme avec une base de donnée postgres SQL
    Par Alexlesilex dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/06/2005, 22h09

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