Developpez.com - Rubrique .NET

Le Club des Développeurs et IT Pro

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

Un article de Hinault Romaric

Le 2012-04-27 17:34:10, par Hinault Romaric, Responsable .NET


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

  Discussion forum
6 commentaires
  • Reward
    Membre confirmé
    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# :
    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# :
    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 ?
  • Hinault Romaric
    Responsable .NET
    Salut,

    Envoyé par Reward
    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

    Envoyé par Reward

    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.
  • Reward
    Membre confirmé
    Ok, je comprends mieux maintenant

    Ton article m'a fait découvrir WebMatrix et ses possibilités, merci
  • oldbrazil
    Nouveau Candidat au Club
    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 ?
  • Hinault Romaric
    Responsable .NET
    Envoyé par oldbrazil
    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.
  • Booyakha
    Membre du Club
    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 :
    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 :
    using System.ComponentModel.DataAnnotations;
    As-tu une idée ?

    Merci beaucoup !