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 :

Entity Framework et découplage


Sujet :

Entity Framework

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut Entity Framework et découplage
    Bonjour à tous!
    J'ai une petite question existencielle d'architecture lorsque l'on travaille avec Entity Framework.

    Je travaille en plusieurs couches et qui sont découplées. L'injection se fait avec Unity.
    J'ai une couche de service, une couche business et je voudrais ajouter une couche data pour persister mes données (pour l'instant j'ai des mocks générés).

    Si je résume mes projets ca donne ca:
    -un projet avec mes définitions d'entités
    -un projet avec le code business
    -un projet avec les interfaces du code business
    -un projet avec le code des services qui référence les interfaces business
    -un projet avec les interfaces du code service

    J'ajoute un projet DAO, un projet avec les interfaces des DAO et business reference les couches DAO.

    Jusque là pas de soucis!

    Admettons ma fonction Business GetMyEntities() qui retourne List<MyEntity> elle doit appeller GetMyEntities() du DAO
    Toujours pas de problèmes!
    Je me retrouve donc avec ca dans mon dao:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    List<MyEntity> GetMyEntities()
    {
        using(var context = new EfContext())
        {
            return context.MyEntities.ToList();
        }
    }
    Ca fonctionne impec

    Les entités sont détachées lorsqu'on sort du contexte. Logique!

    Par contre là ou c'est plus corsé, c'est lorsque je veux faire une fonction business un peu plus complexe qui par exemple insère une ligne puis une autre et si il y'a un échec je rollback tout.
    Comme chaque insert passe par une fonction du dao et que chaque fonction du dao possède son contexte (donc sa transaction) si je rollback le deuxieme insert ca ne rollback pas le premier! Flute
    La méthode serait alors de remonter le contexte dans le business. Oui mais je perdrais mon découplage puisque business referencerais DAO

    Est ce que mon raisonnement est juste? Le contexte doit il appartenir au projet des entités, au projet business, au projet dao?

    PS: Ah oui je précise un truc important! Je travaille en POCO avec EF Code First CTP5

  2. #2
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Hello,

    Il ne faut pas que ton context soit remonté au niveau du business il faut juste que tes différentes DAO travaillent ensemble sur le même ObjectContext.

    Il faut donc que ce soit un "pseudo" singleton.
    Apres les choix de stockage sont multiples, tu peux le stocker dans la requête ou dans le thread en cours, unity propose ces possibilité via des lifetimecontainer.

  3. #3
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Ah c'est interessant ce que tu me dis la effectivement!
    Ce que je ne voudrais pas faire c'est un bon vieux singleton qui fait que toutes les requêtes passent par un seul et même contexte pour tout le monde

    As tu des articles sous la main à ce sujet?

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/08/2008, 11h36
  2. ADO.NET Entity Framework, Astoria, Silverlight -> .NET 3.5 ?
    Par rad_hass dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 08/07/2008, 17h01
  3. version final d'Entity framework
    Par korchimustapha dans le forum Général Dotnet
    Réponses: 8
    Dernier message: 04/07/2008, 18h21
  4. [ADO.NET Entity Framework] génération des tables
    Par anthyme dans le forum Accès aux données
    Réponses: 3
    Dernier message: 22/02/2008, 18h44
  5. Linq - Entity Framework
    Par Jfrancois57 dans le forum Framework .NET
    Réponses: 11
    Dernier message: 12/02/2008, 09h06

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