+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    janvier 2007
    Messages
    4 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2007
    Messages : 4 489
    Points : 249 949
    Points
    249 949
    Billets dans le blog
    46

    Par défaut Création d'une application CRUD avec WebMatrix, Razor et Entity Framework



    J'ai redigé un article sur la création d'une application CRUD avec WebMatrix, Razor et Entity Framework

    J'ai eu à développer récemment une application CRUD avec WebMatrix. Utilisant principalement la classe DataBase de l'espace de nom Microsoft.Data pour la manipulation des données, lorsque j'ai aperçu Entity Framework dans les packages NuGet avec WebMatrix 2 bêta, je me suis dit " génial " ! Ça veut dire que je peux l'utiliser dans ma solution.

    J'ai donc opté pour l'utilisation de la bibliothèque au sein de mon application WebMatrix. Entity Framework est en passe de devenir un standard pour la manipulation des données et est recommandé par Microsoft.

    Contrairement à Visual Studio et ASP.NET ou l'on dispose de plusieurs outils rendant facile la conception d'une application CRUD avec Entity Framework, sur WebMatrix, c'est un peu compliqué et l'on ne dispose pas des fonctionnalités comme l'échafaudage, et encore moins des ressources sur Internet.

    C'est pourquoi j'ai décidé de fournir au travers de cet article une démarche pas à pas avec autant de détails que possible pour la conception d'une application CRUD avec WebMatrix, Razor et Entity Framework.
    Cette discussion est ouverte donc pour avoir vos avis, remarques et suggestions sur l'article qui peut-être consulté sur cette page.

    N'hésitez pas à noter l'article et y ajouter un pouce vers le haut

    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  2. #2
    Membre confirmé

    Profil pro
    Développeur .NET
    Inscrit en
    août 2004
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : août 2004
    Messages : 178
    Points : 624
    Points
    624

    Par défaut

    Salut !

    Moi qui comptais publier un article sur Code First, ton "Tout en 1" me prend de court ^^

    Je corrige quelques coquilles

    Titre du chapitre VI. Création du DBContext

    Dans le code de PersonneRepository:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     public void Delette(Personne  personne)
        {
           _context.Personnes.Remove(personne);
           _context.SaveChanges();
        }

    Un seul t.

    De plus cette fonction fait doublon avec celle-ci, est-ce normal ?

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void Remove(Personne personne)
        {
          _context.Personnes.Remove(personne);
          _context.SaveChanges();
        }

    Je n'ai pas vu d'autres fautes.

    Par contre j'ai une question sur le fond.

    Ton "repository", du moins l'écriture de PersonneRepository, pour moi c'est de l'accès aux données.

    Hors d'après ce que tu écris, je cite " Le Repository permet de créer une couche d'abstraction entre la couche d'accès aux données et la logique métier de l'application"; ce n'est pas le cas.

    Je m'interroge, que mets-tu dans ta DAL ?

  3. #3
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    janvier 2007
    Messages
    4 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2007
    Messages : 4 489
    Points : 249 949
    Points
    249 949
    Billets dans le blog
    46

    Par défaut

    Salut,

    Citation Envoyé par Reward Voir le message
    Salut !

    Moi qui comptais publier un article sur Code First, ton "Tout en 1" me prend de court ^^

    Je corrige quelques coquilles

    Titre du chapitre VI. Création du DBContext

    Dans le code de PersonneRepository:

    public void Delette(Personne personne)
    {
    _context.Personnes.Remove(personne);
    _context.SaveChanges();
    }

    Un seul t.

    De plus cette fonction fait doublon avec celle-ci, est-ce normal ?

    public void Remove(Personne personne)
    {
    _context.Personnes.Remove(personne);
    _context.SaveChanges();
    }
    Corrigé, la fonction delette etait de trop. Erreur d’inattention de ma part


    Citation Envoyé par Reward Voir le message
    Par contre j'ai une question sur le fond.

    Ton "repository", du moins l'écriture de PersonneRepository, pour moi c'est de l'accès aux données.

    Hors d'après ce que tu écris, je cite " Le Repository permet de créer une couche d'abstraction entre la couche d'accès aux données et la logique métier de l'application"; ce n'est pas le cas.

    Je m'interroge, que mets-tu dans ta DAL ?
    C'est une définition un peu généraliste qui - je dois le reconnaître - dans ce contexte prête un peu à confusion.

    En effet, dans cette architecture on n'a pas de BLL ou elle peut se confondre avec le Repository. Dans ce cas, la DAL se resume uniquement au DBContext. Mais au vue de la structure de l'application, je suis tout à fait d'accord avec toi que le Repository c'est de l'accès aux données.
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  4. #4
    Membre confirmé

    Profil pro
    Développeur .NET
    Inscrit en
    août 2004
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : août 2004
    Messages : 178
    Points : 624
    Points
    624

    Par défaut

    Ok, je comprends mieux maintenant

    Ton article m'a fait découvrir WebMatrix et ses possibilités, merci

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    décembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2009
    Messages : 1
    Points : 1
    Points
    1

    Par défaut très beau tuto, merci !

    Beau travail.
    Tout y est.
    Il y a juste ce qu'il faut de détail.

    Une petite question cependant :
    vous évoquez le fait que, si l'on modifie le modèle, la DB doit être re-créée.
    C'est certainement efficace, mais très peu subtil (et trop dangereux dans bcp de scénarii de développement)

    Pourtant, il me semble qu'avec le version 4.3 d'EF, les modifications pourraient être prises en compte au fur et à mesure (incrémentiel)


    What Changed Between EF 4.2 and EF 4.3

    The notable changes between EF 4.2 and EF 4.3 include:
    •New Code First Migrations Feature. This is the primary new feature in EF 4.3 and allows a database created by Code First to be incrementally changed as your Code First model evolves.

    Est-ce que je me trompe ?

  6. #6
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    janvier 2007
    Messages
    4 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2007
    Messages : 4 489
    Points : 249 949
    Points
    249 949
    Billets dans le blog
    46

    Par défaut

    Citation Envoyé par oldbrazil Voir le message
    Beau travail.
    Tout y est.
    Il y a juste ce qu'il faut de détail.

    Une petite question cependant :
    vous évoquez le fait que, si l'on modifie le modèle, la DB doit être re-créée.
    C'est certainement efficace, mais très peu subtil (et trop dangereux dans bcp de scénarii de développement)

    Pourtant, il me semble qu'avec le version 4.3 d'EF, les modifications pourraient être prises en compte au fur et à mesure (incrémentiel)


    What Changed Between EF 4.2 and EF 4.3

    The notable changes between EF 4.2 and EF 4.3 include:
    •New Code First Migrations Feature. This is the primary new feature in EF 4.3 and allows a database created by Code First to be incrementally changed as your Code First model evolves.

    Est-ce que je me trompe ?
    Salut,

    Non, tu ne te trompes pas. La version 4.3 d'Entity Framework introduit justement comme nouveauté phare Code First Migrations qui permet d'effectuer des mises à jour de la base de données à partir des modifications apportées au modèle avec moins de risque de perte de données. j'ai même écrit un article dessus .

    L'article est basé sur le version 4.2 d'EF voila pourquoi je ne mentionne pas cela. De plus, Code Fisrt Migrations est extrêmement lié à la console NuGet qui malheureusement n'est pas prise en charge par WebMatrix.
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    janvier 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : janvier 2003
    Messages : 72
    Points : 51
    Points
    51

    Par défaut

    Merci Romaric pour cet article fort bien expliqué et détaillé !

    Cependant j'ai une erreur lors de la compilation au niveau de Affiliation.cs, j'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CS0246: Le type ou le nom d'espace de noms 'ForeignKey' est introuvable
    Pourtant le code est en tout point similaire au tien, j'importe bien tous les packages notamment celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.ComponentModel.DataAnnotations;
    As-tu une idée ?

    Merci beaucoup !

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