Création d'une application CRUD avec WebMatrix, Razor et Entity Framework
Un article de Hinault Romaric

Le , 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



Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Reward Reward - Membre confirmé https://www.developpez.com
le 01/05/2012 à 15:40
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
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
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 ?
Avatar de Hinault Romaric Hinault Romaric - Responsable .NET https://www.developpez.com
le 12/05/2012 à 13:51
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.
Avatar de Reward Reward - Membre confirmé https://www.developpez.com
le 13/05/2012 à 11:07
Ok, je comprends mieux maintenant

Ton article m'a fait découvrir WebMatrix et ses possibilités, merci
Avatar de oldbrazil oldbrazil - Nouveau Candidat au Club https://www.developpez.com
le 31/07/2012 à 21:24
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 ?
Avatar de Hinault Romaric Hinault Romaric - Responsable .NET https://www.developpez.com
le 14/09/2012 à 11:50
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.
Avatar de Booyakha Booyakha - Membre du Club https://www.developpez.com
le 30/10/2012 à 13:54
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
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
using System.ComponentModel.DataAnnotations;
As-tu une idée ?

Merci beaucoup !
Responsable bénévole de la rubrique Microsoft DotNET : Hinault Romaric -