Database First
Questo video e la procedura dettagliata forniscono un'introduzione allo sviluppo di Database First con Entity Framework. Database First consente di decompilare un modello da un database esistente. Il modello viene archiviato in un file EDMX (estensione con estensione edmx) e può essere visualizzato e modificato in Entity Framework Designer. Le classi con cui si interagisce nell'applicazione vengono generate automaticamente dal file EDMX.
Guarda il video
Questo video offre un'introduzione allo sviluppo di Database First con Entity Framework. Database First consente di decompilare un modello da un database esistente. Il modello viene archiviato in un file EDMX (estensione con estensione edmx) e può essere visualizzato e modificato in Entity Framework Designer. Le classi con cui si interagisce nell'applicazione vengono generate automaticamente dal file EDMX.
Presentato da: Rowan Miller
Prerequisiti
Per completare questa procedura dettagliata, è necessario avere installato almeno Visual Studio 2010 o Visual Studio 2012.
Se si usa Visual Studio 2010, sarà necessario installare Anche NuGet .
1. Creare un database esistente
In genere, quando si ha come destinazione un database esistente, verrà già creato, ma per questa procedura dettagliata è necessario creare un database per l'accesso.
Il server di database installato con Visual Studio è diverso a seconda della versione di Visual Studio installata:
- Se si usa Visual Studio 2010, si creerà un database SQL Express.
- Se si usa Visual Studio 2012, si creerà un database Local DB.
Procedere e generare il database.
Aprire Visual Studio.
Visualizzazione -> Esplora server
Fare clic con il pulsante destro del mouse su Data Connessione ions -> Aggiungi Connessione ion...
Se non si è connessi a un database da Esplora server prima di dover selezionare Microsoft SQL Server come origine dati
Connessione a Local DB o SQL Express, a seconda di quale è stato installato e immettere DatabaseFirst.Blogging come nome del database
Selezionare OK e verrà chiesto se si vuole creare un nuovo database, selezionare Sì
Il nuovo database verrà visualizzato in Esplora server, fare clic con il pulsante destro del mouse su di esso e selezionare Nuova query
Copiare il codice SQL seguente nella nuova query, quindi fare clic con il pulsante destro del mouse sulla query e selezionare Esegui
CREATE TABLE [dbo].[Blogs] (
[BlogId] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (200) NULL,
[Url] NVARCHAR (200) NULL,
CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);
CREATE TABLE [dbo].[Posts] (
[PostId] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (200) NULL,
[Content] NTEXT NULL,
[BlogId] INT NOT NULL,
CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
);
2. Creare l'applicazione
Per semplificare le operazioni, si creerà un'applicazione console di base che usa Database First per eseguire l'accesso ai dati:
- Aprire Visual Studio.
- File -> Nuovo -> Progetto...
- Selezionare Windows dal menu a sinistra e applicazione console
- Immettere DatabaseFirstSample come nome
- seleziona OK.
3. Modello di reverse engineer
Si userà Entity Framework Designer, incluso come parte di Visual Studio, per creare il modello.
Progetto -> Aggiungi nuovo elemento...
Selezionare Dati dal menu a sinistra e quindi ADO.NET Entity Data Model
Immettere BloggingModel come nome e fare clic su OK
Verrà avviata la Creazione guidata modello di dati di entità
Selezionare Genera dal database e fare clic su Avanti
Selezionare la connessione al database creato nella prima sezione, immettere BloggingContext come nome del stringa di connessione e fare clic su Avanti
Fare clic sulla casella di controllo accanto a "Tabelle" per importare tutte le tabelle e fare clic su "Fine"
Dopo aver completato il processo di reverse engineer, il nuovo modello viene aggiunto al progetto e aperto per la visualizzazione in Entity Framework Designer. È stato aggiunto anche un file App.config al progetto con i dettagli di connessione per il database.
Passaggi aggiuntivi in Visual Studio 2010
Se si lavora in Visual Studio 2010, è necessario eseguire alcuni passaggi aggiuntivi per eseguire l'aggiornamento alla versione più recente di Entity Framework. L'aggiornamento è importante perché consente di accedere a una superficie API migliorata, che è molto più facile da usare, nonché le correzioni di bug più recenti.
Prima di tutto, è necessario ottenere la versione più recente di Entity Framework da NuGet.
- Progetto:> gestisci pacchetti NuGet...Se l'opzione Gestisci pacchetti NuGet non è disponibile, è consigliabile installare la versione più recente di NuGet
- Selezionare la scheda Online
- Selezionare il pacchetto EntityFramework
- Fai clic su Install (Installa).
Successivamente, è necessario scambiare il modello per generare codice che usa l'API DbContext, introdotta nelle versioni successive di Entity Framework.
Fare clic con il pulsante destro del mouse su un punto vuoto del modello in Ef Designer e selezionare Aggiungi elemento generazione codice...
Selezionare Modelli online dal menu a sinistra e cercare DbContext
Selezionare EF 5.x DbContext Generator per C#, immettere BloggingModel come nome e fare clic su Aggiungi
4. Lettura e scrittura di dati
Ora che è disponibile un modello, è possibile usarlo per accedere ad alcuni dati. Le classi che verranno usate per accedere ai dati vengono generate automaticamente in base al file EDMX.
Questa schermata proviene da Visual Studio 2012, se si usa Visual Studio 2010, i file BloggingModel.tt e BloggingModel.Context.tt saranno direttamente nel progetto anziché annidati nel file EDMX.
Implementare il metodo Main in Program.cs, come illustrato di seguito. Questo codice crea una nuova istanza del contesto e quindi la usa per inserire un nuovo blog. Usa quindi una query LINQ per recuperare tutti i blog dal database ordinati alfabeticamente in base al titolo.
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();
}
}
}
È ora possibile eseguire l'applicazione e testarla.
Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
ADO.NET Blog
Press any key to exit...
5. Gestione delle modifiche del database
È ora possibile apportare alcune modifiche allo schema del database, quando si apportano queste modifiche è necessario aggiornare anche il modello in modo da riflettere tali modifiche.
Il primo passaggio consiste nell'apportare alcune modifiche allo schema del database. Verrà aggiunta una tabella Users allo schema.
- Fare clic con il pulsante destro del mouse sul database DatabaseFirst.Blogging in Esplora server e scegliere Nuova query
- Copiare il codice SQL seguente nella nuova query, quindi fare clic con il pulsante destro del mouse sulla query e selezionare Esegui
CREATE TABLE [dbo].[Users]
(
[Username] NVARCHAR(50) NOT NULL PRIMARY KEY,
[DisplayName] NVARCHAR(MAX) NULL
)
Ora che lo schema viene aggiornato, è possibile aggiornare il modello con tali modifiche.
Fare clic con il pulsante destro del mouse su un punto vuoto del modello in Entity Framework Designer e scegliere "Aggiorna modello da database...", verrà avviata l'Aggiornamento guidato
Nella scheda Aggiungi dell'Aggiornamento guidato selezionare la casella accanto a Tabelle, che indica che si desidera aggiungere eventuali nuove tabelle dallo schema. La scheda Aggiorna mostra tutte le tabelle esistenti nel modello che verranno controllate per verificare la presenza di modifiche durante l'aggiornamento. Le schede Elimina mostrano tutte le tabelle che sono state rimosse dallo schema e verranno rimosse anche dal modello come parte dell'aggiornamento. Le informazioni su queste due schede vengono rilevate automaticamente e vengono fornite solo a scopo informativo, non è possibile modificare alcuna impostazione.
Fare clic su Fine nell'Aggiornamento guidato
Il modello viene ora aggiornato per includere una nuova entità User mappata alla tabella Users aggiunta al database.
Riepilogo
In questa procedura dettagliata è stato esaminato lo sviluppo di Database First, che ha consentito di creare un modello in Entity Framework Designer in base a un database esistente. È stato quindi usato questo modello per leggere e scrivere alcuni dati dal database. Infine, il modello è stato aggiornato in modo da riflettere le modifiche apportate allo schema del database.