Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa esercitazione viene creata un'app console .NET che esegue l'accesso ai dati su 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.
Vedere l'esempio di questo articolo in GitHub.
Prerequisites
Installare il seguente software:
Creare un nuovo progetto
dotnet new console -o EFGetStarted
cd EFGetStarted
Installare Entity Framework Core
Per installare EF Core, è necessario installare il pacchetto per il/i provider di database EF Core che si desidera utilizzare. 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 classi di entità che costituiscono il modello.
- Nella directory del progetto creare 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 può anche decompilare 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. È anche possibile suddividere ogni classe C# nel proprio file.
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 updateVerrà installato dotnet ef e il pacchetto di progettazione necessario per eseguire il comando in un progetto. Il comando
migrationscrea uno scheletro di una migrazione per generare il set iniziale di tabelle per il modello. Ildatabase updatecomando crea il database e applica la nuova migrazione.
Creare, Leggere, Aggiornare & Eliminare
Aprire Program.cs e sostituire il contenuto con il codice seguente:
using System; using System.Linq; using Microsoft.EntityFrameworkCore; 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" }); await db.SaveChangesAsync(); // Read Console.WriteLine("Querying for a blog"); var blog = await db.Blogs .OrderBy(b => b.BlogId) .FirstAsync(); // 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!" }); await db.SaveChangesAsync(); // Delete Console.WriteLine("Delete the blog"); db.Remove(blog); await db.SaveChangesAsync();
Eseguire l'app
Passaggi successivi
- Seguite l'esercitazione ASP.NET Core per usare EF Core in una web app
- Altre informazioni sulle espressioni di query LINQ
- Configurare il modello per specificare elementi come obbligatorio e lunghezza massima
- Usare Migrazioni per aggiornare lo schema del database dopo la modifica del modello