Esercitazione: Introduzione a Entity Framework Database First con MVC 5

Usando MVC, Entity Framework e ASP.NET Scaffolding, è possibile creare un'applicazione Web che fornisce un'interfaccia a un database esistente. Questa serie di esercitazioni illustra come generare automaticamente codice che consente agli utenti di visualizzare, modificare, creare ed eliminare dati che risiedono in una tabella di database. Il codice generato corrisponde alle colonne della tabella di database. Nell'ultima parte della serie si apprenderà come aggiungere annotazioni di dati al modello di dati per specificare i requisiti di convalida e la formattazione di visualizzazione. Al termine, è possibile passare a un articolo di Azure per informazioni su come distribuire un'app .NET e un database SQL in Servizio app di Azure.

Questa esercitazione illustra come iniziare con un database esistente e creare rapidamente un'applicazione Web che consente agli utenti di interagire con i dati. Usa Entity Framework 6 e MVC 5 per compilare l'applicazione Web. La funzionalità di ASP.NET Scaffolding consente di generare automaticamente codice per la visualizzazione, l'aggiornamento, la creazione e l'eliminazione di dati. Usando gli strumenti di pubblicazione in Visual Studio, è possibile distribuire facilmente il sito e il database in Azure.

Questa parte della serie è incentrata sulla creazione di un database e sul popolamento con i dati.

Questa serie è stata scritta con contributi di Tom Dykstra e Rick Anderson. È stato migliorato in base al feedback degli utenti nella sezione dei commenti.

In questa esercitazione:

  • Configurare il database

Prerequisiti

Visual Studio 2017

Configurare il database

Per simulare l'ambiente di avere un database esistente, creare prima un database con alcuni dati precompilati e quindi creare l'applicazione Web che si connette al database.

Questa esercitazione è stata sviluppata usando LocalDB con Visual Studio 2017. È possibile usare un server di database esistente anziché LocalDB, ma a seconda della versione di Visual Studio e del tipo di database, tutti gli strumenti dati in Visual Studio potrebbero non essere supportati. Se gli strumenti non sono disponibili per il database, potrebbe essere necessario eseguire alcuni passaggi specifici del database all'interno della suite di gestione per il database.

Se si verifica un problema con gli strumenti di database nella versione di Visual Studio, assicurarsi di aver installato la versione più recente degli strumenti di database. Per informazioni sull'aggiornamento o l'installazione degli strumenti di database, vedere Microsoft SQL Server Data Tools.

Avviare Visual Studio e creare un progetto di database SQL Server. Assegnare al progetto il nome ContosoUniversityData.

creare un progetto di database

È ora disponibile un progetto di database vuoto. Per assicurarsi di poter distribuire questo database in Azure, è necessario impostare Azure SQL Database come piattaforma di destinazione per il progetto. L'impostazione della piattaforma di destinazione non distribuisce effettivamente il database; significa solo che il progetto di database verificherà che la progettazione del database sia compatibile con la piattaforma di destinazione. Per impostare la piattaforma di destinazione, aprire le proprietà per il progetto e selezionare database SQL di Microsoft Azure per la piattaforma di destinazione.

È possibile creare le tabelle necessarie per questa esercitazione aggiungendo script SQL che definiscono le tabelle. Fare clic con il pulsante destro del mouse sul progetto e aggiungere un nuovo elemento. Selezionare Tabelle e viste>Tabella e denominarlo Student.

Nel file di tabella sostituire il comando T-SQL con il codice seguente per creare la tabella.

CREATE TABLE [dbo].[Student] (
    [StudentID]      INT           IDENTITY (1, 1) NOT NULL,
    [LastName]       NVARCHAR (50) NULL,
    [FirstName]      NVARCHAR (50) NULL,
    [EnrollmentDate] DATETIME      NULL,
    PRIMARY KEY CLUSTERED ([StudentID] ASC)
)

Si noti che la finestra di progettazione viene sincronizzata automaticamente con il codice. È possibile usare il codice o la finestra di progettazione.

mostra codice e progettazione

Aggiungere un'altra tabella. Questa volta denominarlo Course e usare il comando T-SQL seguente.

CREATE TABLE [dbo].[Course] (
    [CourseID] INT           IDENTITY (1, 1) NOT NULL,
    [Title]    NVARCHAR (50) NULL,
    [Credits]  INT           NULL,
    PRIMARY KEY CLUSTERED ([CourseID] ASC)
)

Ripetere una volta di più per creare una tabella denominata Enrollment.

CREATE TABLE [dbo].[Enrollment] (
    [EnrollmentID] INT IDENTITY (1, 1) NOT NULL,
    [Grade]        DECIMAL(3, 2) NULL,
    [CourseID]     INT NOT NULL,
    [StudentID]    INT NOT NULL,
    PRIMARY KEY CLUSTERED ([EnrollmentID] ASC),
    CONSTRAINT [FK_dbo.Enrollment_dbo.Course_CourseID] FOREIGN KEY ([CourseID]) 
        REFERENCES [dbo].[Course] ([CourseID]) ON DELETE CASCADE,
    CONSTRAINT [FK_dbo.Enrollment_dbo.Student_StudentID] FOREIGN KEY ([StudentID]) 
        REFERENCES [dbo].[Student] ([StudentID]) ON DELETE CASCADE
)

È possibile popolare il database con i dati tramite uno script eseguito dopo la distribuzione del database. Aggiungere uno script post-distribuzione al progetto. Fare clic con il pulsante destro del mouse sul progetto e aggiungere un nuovo elemento. Selezionare Script> utentepost-distribuzione. È possibile usare il nome predefinito.

Aggiungere il codice T-SQL seguente allo script post-distribuzione. Questo script aggiunge semplicemente dati al database quando non viene trovato alcun record corrispondente. Non sovrascrive o elimina alcun dato immesso nel database.

MERGE INTO Course AS Target 
USING (VALUES 
        (1, 'Economics', 3), 
        (2, 'Literature', 3), 
        (3, 'Chemistry', 4)
) 
AS Source (CourseID, Title, Credits) 
ON Target.CourseID = Source.CourseID 
WHEN NOT MATCHED BY TARGET THEN 
INSERT (Title, Credits) 
VALUES (Title, Credits);

MERGE INTO Student AS Target
USING (VALUES 
        (1, 'Tibbetts', 'Donnie', '2013-09-01'), 
        (2, 'Guzman', 'Liza', '2012-01-13'), 
(3, 'Catlett', 'Phil', '2011-09-03')
)
AS Source (StudentID, LastName, FirstName, EnrollmentDate)
ON Target.StudentID = Source.StudentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (LastName, FirstName, EnrollmentDate)
VALUES (LastName, FirstName, EnrollmentDate);

MERGE INTO Enrollment AS Target
USING (VALUES 
(1, 2.00, 1, 1),
(2, 3.50, 1, 2),
(3, 4.00, 2, 3),
(4, 1.80, 2, 1),
(5, 3.20, 3, 1),
(6, 4.00, 3, 2)
)
AS Source (EnrollmentID, Grade, CourseID, StudentID)
ON Target.EnrollmentID = Source.EnrollmentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (Grade, CourseID, StudentID)
VALUES (Grade, CourseID, StudentID);

È importante notare che lo script post-distribuzione viene eseguito ogni volta che si distribuisce il progetto di database. Pertanto, è necessario considerare attentamente i requisiti durante la scrittura di questo script. In alcuni casi, è possibile ricominciare da un set di dati noto ogni volta che il progetto viene distribuito. In altri casi, potrebbe non essere necessario modificare i dati esistenti in alcun modo. In base ai requisiti, è possibile decidere se è necessario uno script post-distribuzione o se è necessario includere nello script. Per altre informazioni sul popolamento del database con uno script post-distribuzione, vedere Inclusione di dati in un progetto di database SQL Server.

Sono ora disponibili 4 file di script SQL, ma non tabelle effettive. È possibile distribuire il progetto di database in localdb. In Visual Studio fare clic sul pulsante Start (o F5) per compilare e distribuire il progetto di database. Controllare la scheda Output per verificare che la compilazione e la distribuzione siano riuscite.

Per verificare che il nuovo database sia stato creato, aprire SQL Server Esplora oggetti e cercare il nome del progetto nel server di database locale corretto (in questo caso (localdb)\ProjectsV13.

Per verificare che le tabelle siano popolate con dati, fare clic con il pulsante destro del mouse su una tabella e scegliere Visualizza dati.

visualizzare i dati della tabella

Viene visualizzata una visualizzazione modificabile dei dati della tabella. Ad esempio, se si seleziona Tabelle>dbo.course>Visualizza dati, viene visualizzata una tabella con tre colonne (Course, Title e Credits) e quattro righe.

Risorse aggiuntive

Per un esempio introduttivo dello sviluppo Code First, vedere Introduzione con ASP.NET MVC 5. Per un esempio più avanzato, vedere Creazione di un modello di dati di Entity Framework per un'app MVC 4 ASP.NET.

Per indicazioni sulla selezione dell'approccio di Entity Framework da usare, vedere Approcci per lo sviluppo di Entity Framework.

Passaggi successivi

In questa esercitazione:

  • Configurare il database

Passare all'esercitazione successiva per informazioni su come creare l'applicazione Web e i modelli di dati.