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

Entity Framework Discussion :

Propriétés communes à tous mes objets


Sujet :

Entity Framework

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut Propriétés communes à tous mes objets
    Bonjour à tous, voilà j'ai une 10ene d'entités mappés chacune à une table.

    Maintenant chaque entité a les propriétés "Modifed ; modifedBy; Created ; CreatedBy.

    Au niveau de l'application, j'ai pour chaque entité la mise à jour de ces propriétés.... j'aimerai pouvoir factoriser ce traitement...

    Quelle est pour vous la meilleur méthode ? faire un type complexe (qui remplace mes propriétés) ou faire un type dérivé qui contient ces attributs et touts mes entité dérive de ce nouveau type (puis mapping avec les propriétés) ?

    MErci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par CaptainChoc Voir le message
    faire un type complexe (qui remplace mes propriétés) ou faire un type dérivé qui contient ces attributs et touts mes entité dérive de ce nouveau type (puis mapping avec les propriétés) ?
    La solution de créer une nouvelle entité dans ton modèle et d'en faire dériver toutes tes entités est une solution imaginable mais je ne pense pas que cela soit possible avec EF vu que ce dernier oblige que toutes les entités créées dans ton modèle soit obligatoirement mappées à une table ou vue existante dans ta base de données. (À Confirmer par un autre membre peut-être que je me suis gourée dans le fonctionnement d'EF).

    Créer un type complexe est une bonne solution. Mais il va falloir faire une petite modification dans le modèle à savoir étendre le type complexe avec une classe partielle de sorte à mettre des valeurs par défaut dans le constructeur par défaut pour les propriétés Modifed, ModifedBy, Created, CreatedBy. Du coup seules certaines de ces propriétés devront t'emmerder au moment de la mise à jour mais pas lors de la création vu qu'elles auront les valeurs déjà renseignées. Tu peux t'arrêter là si tu veux mais tu peux pousser le bouchon plus loin en t'abonnant à l'évènement SavingChange de ton contexte et à partir du gestionnaire récupérer les entités qui ont pour état Updated (celles qui seront mises à jour dans ta base de données) et renseigner les valeurs des propriétés Modified et ModifiedBy histoire de centraliser tout ça. Bref avec tout ça je pense que tu ne vas plus toucher aux propriétés Modifed, ModifedBy, Created et CreatedBy.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    Merci pour cette réponse, je retiens l'idée du SavingChange...

    Pour infos, pour la classe de base, je pourrais mettre ma classe de base en abstraite et la mappé pour correspondre aux propriétés des tables correspondantes aux classes enfants... mais dans mon EDMX ca risque d'être un sacré bordel (avec des toutes mes entités qui héritent de ma classe de base)...

    Pour le type Complex, j'ai le problème que CreatedBy et ModifiedBy seront des associations vers ma class User... et si je ne me trompe, je ne peux pas faire de type complexe avec des associations ?

    De plus, il faut savoir que ces informations sont affichées. Si j'utilise une classe de base, je pourrai faire un UserControl qui accepte cette classe de base et ainsi afficher les propriétés.. si je ne fais pas de classe de base, je suis bloqué pour essayer de faire qqchose de générique.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par CaptainChoc Voir le message
    Pour infos, pour la classe de base, je pourrais mettre ma classe de base en abstraite et la mappé pour correspondre aux propriétés des tables correspondantes aux classes enfants... mais dans mon EDMX ca risque d'être un sacré bordel (avec des toutes mes entités qui héritent de ma classe de base)...
    Oulah ! C'est possible ça. Je suis d'accords que tu pourras mapper tes propriétés aux champs de tes différentes tables mais cela ne me dit pas sur quelle table ton entité est mappée. Bref je vais tester histoire de voir mais je te fais confiance.

    Citation Envoyé par CaptainChoc Voir le message
    Pour le type Complex, j'ai le problème que CreatedBy et ModifiedBy seront des associations vers ma class User... et si je ne me trompe, je ne peux pas faire de type complexe avec des associations ?
    Ok je suis totalement d'accord avec toi que cela est impossible. Mais rien ne t'empêche de supprimer les relations dans le modèle (histoire de pourvoir créer le type complexe) mais laisser intactes ces relations dans la BDD. Tu perdras les propriétés de navigation mais tu pourras renseigner les champs scalaires relatifs aux users.

    Citation Envoyé par CaptainChoc Voir le message
    De plus, il faut savoir que ces informations sont affichées. Si j'utilise une classe de base, je pourrai faire un UserControl qui accepte cette classe de base et ainsi afficher les propriétés.. si je ne fais pas de classe de base, je suis bloqué pour essayer de faire qqchose de générique.
    Dans ton précédent post tu dis que ce sera un sacré bordel en dérivant toutes tes entités d'une classe de base et tu dis aussi que si tu ne crées pas la classe de base ça te bloque pour pouvoir faire un truc générique. Là je suis perdu.

    Tu veux quoi plus exactement ?

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Dans ton précédent post tu dis que ce sera un sacré bordel en dérivant toutes tes entités d'une classe de base et tu dis aussi que si tu ne crées pas la classe de base ça te bloque pour pouvoir faire un truc générique. Là je suis perdu.

    Tu veux quoi plus exactement ?
    EN fait ce que je veux dire c'est que effectivement utiliser un type de base pourrai résoudre une partie de mes problèmes cependant j'ai peur que ca mette le boxon dans mon edmx.. donc soit je fait cette méthode, soit il existe qqchose de mieux que j'ai "zappé". c'était juste une remarque et voir si quelqu'un réagissait... mais je crois que je vasi partir sur le type de base

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2015, 14h51
  2. Comment appliquer des propriétés à mes objets ?
    Par Alexino2 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/02/2007, 18h20
  3. [Débutant] Initialiser les propriétés de tous les objets d'une ArrayList
    Par Tententai dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 23/05/2006, 21h24
  4. Rafraichissement de la fiche ainsi que de tous les objets
    Par portu dans le forum Composants VCL
    Réponses: 7
    Dernier message: 06/01/2004, 01h25
  5. Comment cacher des propriétés dans un nouvel objet ?
    Par Pedro dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/10/2003, 19h53

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