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

ASP.NET MVC Discussion :

MVC5 / EF6 Question d'architecture : Les Modèles Code First [Débutant]


Sujet :

ASP.NET MVC

  1. #1
    Membre habitué Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Points : 144
    Points
    144
    Par défaut MVC5 / EF6 Question d'architecture : Les Modèles Code First
    Salut,

    Dans MVC4 en database first, j'avais pour habitude de créer les entités avec l'EDMX que je mappais sur des objets ayant la même signature mais décorés des attributs Display, Required etc.

    Là je travaille sur une application MVC5 EF6 codefirst. Les DataAnnotations sont positionnées sur les membres des classes qui génèrent la base.

    Faut-il encore rajouter une couche objet entre la DAL et l'application MVC ou peut-on directement utiliser les éléments de la DAL dans les formulaires ASP.net MVC (sachant qu'en fait la transmission se fait par Web API 2.0 et que la consommation des données est assurée par Angular JS ?

    Merchi

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Citation Envoyé par Nadinette Voir le message
    Salut,

    Dans MVC4 en database first, j'avais pour habitude de créer les entités avec l'EDMX que je mappais sur des objets ayant la même signature mais décorés des attributs Display, Required etc.

    Là je travaille sur une application MVC5 EF6 codefirst. Les DataAnnotations sont positionnées sur les membres des classes qui génèrent la base.

    Faut-il encore rajouter une couche objet entre la DAL et l'application MVC ou peut-on directement utiliser les éléments de la DAL dans les formulaires ASP.net MVC (sachant qu'en fait la transmission se fait par Web API 2.0 et que la consommation des données est assurée par Angular JS ?

    Merchi
    Rien ne t'empêche d'ajouter une couche (tu peux le faire directement dans ta bll, qui d'un côté prend des Dto et de l'autre tes entités) et de transmettre plutôt des DTO à ta vue, comme ça tu transmet que ce dont tu as besoin et tu peux créer de nouvelle relation, c'est la solution qu'on avait adopté.
    Tu peux aussi travailler directement avec tes entités, mais tu risque de transférer des infos pas pertinentes à la vue et être coincé dans certain cas ou tu veux créer des relations particulières entres tes entités.

    Je te conseil donc la première solution avec les DTO, le plus chiant par contre c'est le mapping à toi de voire si tu utilise une bibliothèque pour ça ou tu fais ça à la main.

  3. #3
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 119
    Points : 203
    Points
    203
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Point de vue architecture les couches facades telles que les couches de services Web API , ou la presentation MVC ... doivent etre autonomes (loose coupling) de sorte que ces couches peuvent etres brancheés avec d'autre couche de services ou metiers ou... que pour lesquelles elle sont prevu au depart
    Pose toi la question : Si tu change la couche metier est ce que tu dois refaire ton Web APi ou il peut juste s'adapter en moindre effort :
    Dans ce sens :

    Le MVC donc model view controller : la couche presentation doit avoir des modeles (idem pour les services (facade) ) le modele est autononome et ne doit pas dependre des entities de données que tu sock en base

    La demarche est de creer un Modele pour chaque VUE et chaque service et de mapper ensuite celui la a une ou plusieurs entities de base .

    Meme si le modele est parfois le meme que l'entity mais il est de bonne pratique de creer un modele decouple de l entity

  4. #4
    Membre habitué Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Points : 144
    Points
    144
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    Rien ne t'empêche d'ajouter une couche (tu peux le faire directement dans ta bll, qui d'un côté prend des Dto et de l'autre tes entités) et de transmettre plutôt des DTO à ta vue, comme ça tu transmet que ce dont tu as besoin et tu peux créer de nouvelle relation, c'est la solution qu'on avait adopté.
    Tu peux aussi travailler directement avec tes entités, mais tu risque de transférer des infos pas pertinentes à la vue et être coincé dans certain cas ou tu veux créer des relations particulières entres tes entités.

    Je te conseil donc la première solution avec les DTO, le plus chiant par contre c'est le mapping à toi de voire si tu utilise une bibliothèque pour ça ou tu fais ça à la main.
    Merci

    Pour le mappin, j'utilise EmitMapper qui fonctionne très bien.

    Citation Envoyé par Lakhdr Voir le message
    Bonjour,

    Point de vue architecture les couches facades telles que les couches de services Web API , ou la presentation MVC ... doivent etre autonomes (loose coupling) de sorte que ces couches peuvent etres brancheés avec d'autre couche de services ou metiers ou... que pour lesquelles elle sont prevu au depart
    Pose toi la question : Si tu change la couche metier est ce que tu dois refaire ton Web APi ou il peut juste s'adapter en moindre effort :
    Dans ce sens :

    Le MVC donc model view controller : la couche presentation doit avoir des modeles (idem pour les services (facade) ) le modele est autononome et ne doit pas dependre des entities de données que tu sock en base

    La demarche est de creer un Modele pour chaque VUE et chaque service et de mapper ensuite celui la a une ou plusieurs entities de base .

    Meme si le modele est parfois le meme que l'entity mais il est de bonne pratique de creer un modele decouple de l entity
    Je vous ce que tu veux dire toutefois, je ne remplis plus mes vues avec des données, elles sont exclusivement alimentées par des webapi (voir des webapi odata) qui s'appuient sur des vues en base. Pour le moment, je ne sais pas encore créer des vues en base en code first mais ça devrait venir. Au pire, je préparerais des scripts que j'injecterai dans le onModelCreating mais j'ai peur que ça ne soit pas très correct d'un pur point de vue de puriste fanatique.

    Merci

  5. #5
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 119
    Points : 203
    Points
    203
    Billets dans le blog
    1
    Par défaut
    Oh quand je parle de VUE je parle d'affichage et de non VUE de base de données.
    Je parle de VUE(affichage razor,html...) VUE dans MVC .

    Dans ton cas tu utilises des services (Web APi,odata ou autres ) ce que j ai essaye de t expliquer c est que point de vue architecture cette couche de service doit etre isolée du reste des couches metiers.
    Donc les modeles ou les objets (DTO) que tu envoies a travers ton API doivent etre differents des entités que tu stock en base .

    une entite (l objet qu utilise entity framework) peut etre mappe a plusieurs Modeles(DTO)
    un Modele DTO peut regrouper plusieurs entites .


    Enfin pour les VUEs de base de données c 'est une autre histoire quand tu commencera a regarder pour les performances les agregat ..etc tu verras pour la programmabilite de la base de données.

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Surtout que les Vues en BDD peuvent poser problème avec Entity framework.

    Emitmapper a l'air assez ancien, tu as aussi Auto Mapper

    Quand je veux faire les trucs bien, je crée 3 projets en plus du projet web,l'un contenant mes dto, un autre ma Bll, un dernier ma Dal, après pour les entités c'est suivant ta façon de faire, si c'est du code first je me demande s'il faut pas les mettre dans un projet à part entière.

    Tu dois pouvoir trouver des exemples de projet Web Api je pense avec une bonne architecture.

  7. #7
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 119
    Points : 203
    Points
    203
    Billets dans le blog
    1
    Par défaut
    Je te donne un projet que je fais moi meme et tu peux y contribuer si tu veux c est du DDD regarde ici

  8. #8
    Membre habitué Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Points : 144
    Points
    144
    Par défaut
    Du coup, ça m'amène une question.

    Lorsque j'ai défini mes entités code first, j'ai mis les data annotations. Ca a bien fonctionné, j'ai vu que les champs avaient les bonnes longueurs et tout.
    J'ai aussi mis les display (pour les labels dans les vues mvc).

    Si je découple, est-il possible de récupérer les displays et autres règles de gestion qui sont dans les data annotations dans le view model ou pas ?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. questions sur les modèles linéaires
    Par Invité dans le forum R
    Réponses: 1
    Dernier message: 02/09/2011, 09h28
  2. Réponses: 3
    Dernier message: 23/06/2010, 11h25
  3. architecture dirigée par les modèles
    Par thouraya24 dans le forum MDE
    Réponses: 6
    Dernier message: 29/12/2008, 16h13
  4. Question générale sur l'architecture d'un code
    Par uriotcea dans le forum Qt
    Réponses: 7
    Dernier message: 30/05/2008, 11h12
  5. [C# 2.0] Question d'architecture - code dynamique
    Par StormimOn dans le forum Framework .NET
    Réponses: 11
    Dernier message: 06/03/2007, 11h19

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