Introduzione a EF Core
In questa esercitazione viene creata un'app console .NET Core che esegue l'accesso ai dati in un database SQLite usando Entity Framework Core.
È possibile seguire l'esercitazione usando Visual Studio in Windows o usando l'interfaccia della riga di comando di .NET in Windows, macOS o Linux.
Visualizzare l'esempio di questo articolo su GitHub.
Prerequisiti
Installare il software seguente:
Crea un nuovo progetto
dotnet new console -o EFGetStarted
cd EFGetStarted
Installare Entity Framework Core
Per installare EF Core, installare il pacchetto per i provider di database di EF Core che si vuole usare come destinazione. Questa esercitazione usa SQLite perché viene eseguito in tutte le piattaforme supportate da .NET. Per un elenco dei provider disponibili, vedere Provider di database.
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
Creare il modello
Definire una classe di contesto e le classi di entità che costituiscono il modello.
- Nella directory del progetto creare un file Model.cs con il codice seguente
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
public string DbPath { get; }
public BloggingContext()
{
var folder = Environment.SpecialFolder.LocalApplicationData;
var path = Environment.GetFolderPath(folder);
DbPath = System.IO.Path.Join(path, "blogging.db");
}
// The following configures EF to create a Sqlite database file in the
// special "local" folder for your platform.
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlite($"Data Source={DbPath}");
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; } = new();
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
EF Core supporta anche il reverse engineering di un modello da un database esistente.
Suggerimento: questa applicazione mantiene intenzionalmente le cose semplici per maggiore chiarezza. Le stringhe di connessione non devono essere archiviate nel codice per le applicazioni di produzione. Potrebbe anche essere preferibile suddividere ogni classe C# in un file separato.
Creare il database
La procedura seguente usa le migrazioni per creare un database.
Eseguire i comandi seguenti:
dotnet tool install --global dotnet-ef dotnet add package Microsoft.EntityFrameworkCore.Design dotnet ef migrations add InitialCreate dotnet ef database update
Vengono installati dotnet ef e il pacchetto di progettazione necessario per eseguire il comando in un progetto. Il comando
migrations
esegue lo scaffolding di una migrazione per creare il set iniziale di tabelle per il modello. Il comandodatabase update
crea il database e ne applica la nuova migrazione.
Creazione, lettura, aggiornamento ed eliminazione
Aprire Program.cs e sostituire il contenuto con il codice seguente:
using System; using System.Linq; using var db = new BloggingContext(); // Note: This sample requires the database to be created before running. Console.WriteLine($"Database path: {db.DbPath}."); // Create Console.WriteLine("Inserting a new blog"); db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" }); db.SaveChanges(); // Read Console.WriteLine("Querying for a blog"); var blog = db.Blogs .OrderBy(b => b.BlogId) .First(); // Update Console.WriteLine("Updating the blog and adding a post"); blog.Url = "https://devblogs.microsoft.com/dotnet"; blog.Posts.Add( new Post { Title = "Hello World", Content = "I wrote an app using EF Core!" }); db.SaveChanges(); // Delete Console.WriteLine("Delete the blog"); db.Remove(blog); db.SaveChanges();
Eseguire l'app
dotnet run
Passaggi successivi
- Seguire l'esercitazione di ASP.NET Core per usare EF Core in un'app Web
- Vedere altre informazioni sulle espressioni di query LINQ
- Configurare il modello per specificare elementi come la lunghezza obbligatoria e massima
- Usare le migrazioni per aggiornare lo schema del database dopo aver modificato il modello