Stringhe di connessione

La maggior parte dei provider di database richiede una forma di stringa di connessione per connettersi al database. In alcuni casi questo stringa di connessione contiene informazioni riservate che devono essere protette. Potrebbe anche essere necessario modificare il stringa di connessione durante lo spostamento dell'applicazione tra ambienti, ad esempio sviluppo, test e produzione.

ASP.NET Core

In ASP.NET Core il sistema di configurazione è molto flessibile e il stringa di connessione può essere archiviato in appsettings.json, una variabile di ambiente, l'archivio dei segreti utente o un'altra origine di configurazione. Per altri dettagli, vedere la sezione Configurazione della documentazione di ASP.NET Core.

Ad esempio, è possibile usare lo strumento Secret Manager per archiviare la password del database e quindi, nello scaffolding, usare un stringa di connessione semplicemente costituito da Name=<database-alias>.

dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"
dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer

In alternativa, nell'esempio seguente viene illustrato il stringa di connessione archiviato in appsettings.json.

{
  "ConnectionStrings": {
    "BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
  },
}

Il contesto viene in genere configurato in Startup.cs con il stringa di connessione letto dalla configurazione. Si noti che il GetConnectionString() metodo cerca un valore di configurazione la cui chiave è ConnectionStrings:<connection string name>. Per usare questo metodo di estensione, è necessario importare lo spazio dei nomi Microsoft.Extensions.Configuration .

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<BloggingContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));
}

Applicazioni WinForms e WPF

WinForms, WPF e ASP.NET 4 applicazioni hanno un modello di stringa di connessione provato e testato. Il stringa di connessione deve essere aggiunto al file App.config dell'applicazione (Web.config se si usa ASP.NET). Se il stringa di connessione contiene informazioni riservate, ad esempio nome utente e password, è possibile proteggere il contenuto del file di configurazione usando La configurazione protetta.

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <connectionStrings>
    <add name="BloggingDatabase"
         connectionString="Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" />
  </connectionStrings>
</configuration>

Suggerimento

L'impostazione providerName non è necessaria per ef core stringa di connessione archiviati in App.config perché il provider di database è configurato tramite codice.

È quindi possibile leggere il stringa di connessione usando l'API ConfigurationManager nel metodo del OnConfiguring contesto. Potrebbe essere necessario aggiungere un riferimento all'assembly del System.Configuration framework per poter usare questa API.

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
      optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["BloggingDatabase"].ConnectionString);
    }
}

Piattaforma UWP (Universal Windows Platform)

Connessione stringhe di Connessione ion in un'applicazione UWP sono in genere una connessione SQLite che specifica solo un nome file locale. In genere non contengono informazioni riservate e non è necessario modificarle durante la distribuzione di un'applicazione. Di conseguenza, queste stringa di connessione in genere vanno lasciate nel codice, come illustrato di seguito. Se vuoi spostarli fuori dal codice, UWP supporta il concetto di impostazioni, vedi la sezione App Impostazioni della documentazione UWP per informazioni dettagliate.

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
            optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}