Avant de commencer, il est nécessaire de préciser qu’Entity Framework Core a été conçu pour une approche Code First. De ce fait, tout ce que nous allons voir dans cet article et les suivants, est susceptible d’être modifié voire supprimé. Cependant, il peut arriver que l’on ait besoin, pour une raison ou une autre (base de données d’une appli existante, …), de faire du Database First avec EF Core.

Dans cette série d’articles EF Core Database First, nous allons aborder différentes thématiques autour du Database First avec Entity Framework Core, dont voici la liste :

  1. Visite guidée (cet article)
  2. Les outils en ligne de commande
  3. Personnaliser le code généré
  4. Quelques astuces utiles

Pour bien commencer

Afin de pouvoir essayer les commandes que nous allons voir dans les prochains articles, nous allons créer et utiliser un projet d’exemple : une petite boutique. L’idée est d’avoir une base de données simple pour une application web (MVC Core) l’utilisant.

Si vous souhaitez passer cette étape, vous pouvez récupérer la solution pour Visual Studio 2017 sur GitHub : https://github.com/adrenalinedj/efcoredbfirstexample.

Outils utilisés

Voici la liste des outils utilisés :

Création du projet

Après avoir ouvert VS 2017, créez un projet de type ASP.Net Core Web Application que l’on nommera EFCoreDBFirst.MyStore. Dans l’étape suivante, sélectionnez Web Application (Model-View-Controller).

Vous devriez obtenir quelque chose comme ceci :

Création de la base de données

Pour la base de données, nous allons utiliser localDb.

Pour cela, il suffit d’ouvrir la fenêtre Server Explorer à partir du menu View puis d’effectuer un clic-droit sur Data Connections et de sélectionner Create new SQL Server Database....

Dans la nouvelle fenêtre, il suffit d’indiquer (localdb)\mssqllocaldb dans le champ Server name et EFCoreDBFirstMyStore dans le champ New database name puis de cliquer sur Ok pour terminer.

Dans la fenêtre, il suffit de sélectionner Microsoft SQL Server puis de cliquer sur Continue.

Dans la fenêtre de connexion, il faut préciser le server name qui doit être (localdb)\mssqllocaldb. Vous pouvez vérifier la connexion en cliquant sur Test Connection et vous devriez obtenir le message suivant Test connection succeeded. Sélectionnez master puis Okpour terminer.

Vous devriez voir la nouvelle connexion appraitre comme ceci:

Maintenant, il faut effectuer un clic-droit sur la connexion, nouvellement créée, et sélectionner New Query. Dans la fenêtre, il suffit de copier-coller le script SQL suivant et de l’exécuter pour que la base de données soit créée :

USE [EFCoreDBFirstMyStore]
GO
CREATE TABLE [dbo].[Category]
(
    [Id] INT NOT NULL IDENTITY,
    [Name] NVARCHAR(50) NOT NULL,
    [Description] NVARCHAR(255) NULL,
    CONSTRAINT [PK_Category] PRIMARY KEY ([Id])
);
GO
CREATE TABLE [dbo].[Product]
(
    [Id] INT NOT NULL IDENTITY,
    [CategoryId] INT NOT NULL,
    [Name] NVARCHAR(128) NOT NULL,
    [Description] NVARCHAR(MAX) NOT NULL,
    [Price] DECIMAL(18, 3) NOT NULL,
    [Stock] INT NOT NULL,
    CONSTRAINT [PK_Product] PRIMARY KEY ([Id]),
    CONSTRAINT [FK_Product_Category_Id] FOREIGN KEY ([CategoryId]) REFERENCES [dbo].[Category] ([Id])
);
GO
CREATE SCHEMA [stats]
GO
CREATE TABLE [stats].[ProductView]
(
    [Id] INT NOT NULL IDENTITY,
    [ProductId] INT NOT NULL,
    [Views] INT NOT NULL,
    CONSTRAINT [PK_ProductView] PRIMARY KEY ([Id]),
    CONSTRAINT [FK_ProductView_Product_Id] FOREIGN KEY ([ProductId]) REFERENCES [dbo].[Product] ([Id])
);
GO

Cela va créer 2 tables dans le schéma dbo pour les catégories et les produits de notre boutique exemple et 1 table dans le schéma stats pour le nombre de vues des produits.

Ne ratez plus aucune actualité avec la newsletter mensuelle de SoftFluent

Newsletter SoftFluent