Model First

Cette vidéo et cette procédure pas à pas fournissent une introduction au développement Model First à l’aide d’Entity Framework. Model First vous permet de créer un modèle à l’aide d’Entity Framework Designer, puis de générer un schéma de base de données à partir du modèle. Le modèle est stocké dans un fichier EDMX (extension .edmx) et peut être consulté et modifié dans Entity Framework Designer. Les classes avec lesquelles vous interagissez dans votre application sont générées automatiquement à partir du fichier EDMX.

Regardez la vidéo

Cette vidéo et cette procédure pas à pas fournissent une introduction au développement Model First à l’aide d’Entity Framework. Model First vous permet de créer un modèle à l’aide d’Entity Framework Designer, puis de générer un schéma de base de données à partir du modèle. Le modèle est stocké dans un fichier EDMX (extension .edmx) et peut être consulté et modifié dans Entity Framework Designer. Les classes avec lesquelles vous interagissez dans votre application sont générées automatiquement à partir du fichier EDMX.

Présentée par : Rowan Miller

Vidéo : WMV | MP4 | WMV (ZIP)

Conditions préalables

Vous devrez avoir Visual Studio 2010 ou Visual Studio 2012 installé pour effectuer cette procédure pas à pas.

Si vous utilisez Visual Studio 2010, vous devez également installer NuGet.

1. Création de l’application

Pour simplifier les choses, nous allons créer une application console de base qui utilise Model First pour effectuer l’accès aux données :

  • Ouvrez Visual Studio.
  • Fichier -> Nouveau -> Projet
  • Sélectionnez Windows dans le menu de gauche et Application console
  • Entrez ModelFirstSample comme nom
  • Sélectionnez OK.

2. Création du modèle

Nous allons utiliser Entity Framework Designer, qui est inclus dans Visual Studio, pour créer notre modèle.

  • Projet -> Ajouter un nouvel élément…

  • Sélectionnez Données dans le menu de gauche, puis ADO.NET Entity Data Model

  • Entrez BloggingModel comme nom et cliquez sur OK, ce qui lance l’Assistant Entity Data Model

  • Sélectionnez Modèle vide, puis cliquez sur Terminer

    Create Empty Model

Entity Framework Designer est ouvert avec un modèle vide. À présent, nous pouvons commencer à ajouter des entités, des propriétés et des associations au modèle.

  • Cliquez avec le bouton droit sur l’aire de conception, puis sélectionnez Propriétés

  • Dans la fenêtre Propriétés, remplacez le Nom du conteneur d’entités par BloggingContextIl s’agit du nom du contexte dérivé qui sera généré pour vous. Le contexte représente une session avec la base de données, ce qui nous permet d’interroger et d’enregistrer des données

  • Cliquez avec le bouton droit sur l’aire de conception et sélectionnez Ajouter nouveau -> Entité...

  • Entrez Blog comme nom d’entité et BlogId comme nom de clé, puis cliquez sur OK

    Add Blog Entity

  • Cliquez avec le bouton droit sur la nouvelle entité sur l’aire de conception, puis sélectionnez Ajouter nouveau -> Propriété scalaire, entrez Name comme nom de la propriété.

  • Répétez ce processus pour ajouter une propriété Url.

  • Cliquez avec le bouton droit sur la propriété Url sur l’aire de conception et sélectionnez Propriétés. Dans la fenêtre Propriétés, modifiez le paramètre Nullable sur la valeur vraiCela nous permet d’enregistrer un blog dans la base de données sans l’affecter à une Url

  • À l’aide des techniques que vous venez d’apprendre, ajoutez une entité Post avec une propriété de clé PostId

  • Ajouter des propriétés scalaires Titre et Contenu à l’entité Post

Maintenant que nous avons quelques entités, il est temps d’ajouter une association (ou une relation) entre elles.

  • Cliquez avec le bouton droit sur l’aire de conception et sélectionnez Ajouter nouveau -> Association...

  • Pointez une extrémité de la relation vers Blog avec une multiplicité de Un et l’autre extrémité vers Billet avec une multiplicité de PlusieursCela signifie qu’un Blog a de nombreux Billets et qu’un Billet appartient à un Blog

  • Vérifiez que la case Ajouter des propriétés de clé étrangère à l’entité « Billet » est cochée et cliquez sur OK

    Add Association MF

Nous avons maintenant un modèle simple à partir duquel nous pouvons générer une base de données et l’utiliser pour lire et écrire des données.

Model Initial

Étapes supplémentaires dans Visual Studio 2010

Si vous travaillez dans Visual Studio 2010, vous devez suivre certaines étapes supplémentaires pour effectuer une mise à niveau vers la dernière version d’Entity Framework. La mise à niveau est importante, car elle vous donne accès à une surface d’API améliorée, qui est beaucoup plus facile à utiliser, ainsi qu’aux derniers correctifs de bogues.

Tout d’abord, nous devons obtenir la dernière version d’Entity Framework à partir de NuGet.

  • Projet -> Gérer les packages NuGet...Si vous n’avez pas l’option Gérer les packages NuGet... vous devez installer la dernière version de NuGet
  • Sélectionnez l’onglet En ligne
  • Sélectionnez le package EntityFramework
  • Cliquez sur Install.

Ensuite, nous devons échanger notre modèle pour générer du code qui utilise l’API DbContext, qui a été introduite dans les dernières versions d’Entity Framework.

  • Cliquez avec le bouton droit sur un emplacement vide de votre modèle dans EF Designer, puis sélectionnez Ajouter un élément de génération de code...

  • Sélectionnez Modèles en ligne dans le menu de gauche et recherchez DbContext

  • Sélectionnez le générateur DbContext EF 5.x pour C#, entrez BloggingModel comme nom, puis cliquez sur Ajouter

    DbContext Template

3. Génération de la base de données

Étant donné notre modèle, Entity Framework peut calculer un schéma de base de données qui nous permettra de stocker et de récupérer des données à l’aide du modèle.

Le serveur de base de données installé avec Visual Studio est différent selon la version de Visual Studio que vous avez installée :

  • Si vous utilisez Visual Studio 2010, vous allez créer une base de données SQL Express.
  • Si vous utilisez Visual Studio 2012, vous allez créer une base de données LocalDB.

Allons-y et générons la base de données.

  • Cliquez avec le bouton droit sur l’aire de conception et sélectionnez Générer une base de données à partir du modèle...

  • Cliquez sur Nouvelle connexion... et spécifiez LocalDB ou SQL Express, selon la version de Visual Studio que vous utilisez, entrez ModelFirst.Blogging comme nom de base de données.

    LocalDB Connection MF

    Sql Express Connection MF

  • Sélectionnez OK et vous serez invité à créer une base de données, puis sélectionnez Oui

  • Sélectionnez Suivant et Entity Framework Designer calcule un script pour créer le schéma de base de données

  • Une fois le script affiché, cliquez sur Terminer et le script sera ajouté à votre projet et ouvert

  • Cliquez avec le bouton droit sur le script et sélectionnez Exécuter. Vous serez invité à spécifier la base de données à laquelle vous vous connectez. Spécifiez LocalDB ou SQL Server Express, selon la version de Visual Studio que vous utilisez

4. Lecture et écriture de données

Maintenant que nous avons un modèle, il est temps de l’utiliser pour accéder à certaines données. Les classes que nous allons utiliser pour accéder aux données sont générées automatiquement pour vous en fonction du fichier EDMX.

Cette capture d’écran a été prise dans Visual Studio 2012. Si vous utilisez Visual Studio 2010, les fichiers BloggingModel.tt et BloggingModel.Context.tt sont directement sous votre projet, et non imbriqués sous le fichier EDMX.

Generated Classes

Implémentez la méthode Main dans Program.cs, comme indiqué ci-dessous. Ce code crée une instance de notre contexte, puis l’utilise pour insérer un nouveau Blog. Il utilise ensuite une requête LINQ pour récupérer tous les Blogs de la base de données classées par titre en ordre alphabétique.

class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // Create and save a new Blog
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();

            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();

            // Display all Blogs from the database
            var query = from b in db.Blogs
                        orderby b.Name
                        select b;

            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

Vous pouvez maintenant exécuter l’application et la tester.

Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
ADO.NET Blog
Press any key to exit...

5. Gestion des modifications de modèle

Maintenant, il est temps d’apporter des modifications à notre modèle. Lorsque nous effectuons ces modifications, nous devons également mettre à jour le schéma de base de données.

Nous allons commencer par ajouter une nouvelle entité User à notre modèle.

  • Ajoutez un nouveau nom d’entité User avecUsername comme nom de clé et Chaîne comme type de propriété pour la clé

    Add User Entity

  • Cliquez avec le bouton droit sur la propriété Username sur l’aire de conception et sélectionnez Propriétés. Dans la fenêtre Propriétés, remplacez le paramètre MaxLength par 50Cela limite les données qui peuvent être stockées dans le nom d’utilisateur à 50 caractères

  • Ajoutez une propriété scalaire DisplayName à l’entité User

Nous avons maintenant un modèle mis à jour et nous sommes prêts à mettre à jour la base de données pour prendre en charge notre nouveau type d’entité User.

  • Cliquez avec le bouton droit sur l’aire de conception et sélectionnez Générer une base de données à partir du modèle.... Entity Framework calcule un script pour recréer un schéma basé sur le modèle mis à jour.
  • Cliquez sur Terminer
  • Vous pouvez recevoir des avertissements concernant le remplacement du script DDL existant et le mappage et les parties de stockage du modèle. Cliquez sur Oui pour ces deux avertissements
  • Le script SQL mis à jour pour créer la base de données est ouvert pour vous
    Le script généré supprime toutes les tables existantes, puis recrée le schéma à partir de zéro. Cela peut fonctionner pour le développement local, mais n’est pas viable pour envoyer (push) des modifications à une base de données déjà déployée. Si vous devez publier des modifications dans une base de données déjà déployée, vous devez modifier le script ou utiliser un outil de comparaison de schémas pour calculer un script de migration.
  • Cliquez avec le bouton droit sur le script et sélectionnez Exécuter. Vous serez invité à spécifier la base de données à laquelle vous vous connectez. Spécifiez LocalDB ou SQL Server Express, selon la version de Visual Studio que vous utilisez

Résumé

Dans cette procédure pas à pas, nous avons examiné le développement Model First, qui nous a permis de créer un modèle dans EF Designer, puis de générer une base de données à partir de ce modèle. Nous avons ensuite utilisé le modèle pour lire et écrire des données à partir de la base de données. Enfin, nous avons mis à jour le modèle, puis recréé le schéma de base de données pour qu’il corresponde au modèle.