Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
De flesta databasprovidrar kräver en anslutningssträng för att ansluta till databasen. Anslutningssträngen:
- Kan innehålla känslig information som måste skyddas.
- Kan behöva ändras när appen flyttas till olika miljöer, till exempel utveckling, testning och produktion.
Mer information finns i Skydda autentiseringsflöden
ASP.NET Core
Konfigurationen av ASP.NET Core kan lagra anslutningssträngar med olika leverantörer.
- I
appsettings.Development.json-filen ellerappsettings.json-filen. - I en miljövariabel
- Använda Azure Key Vault
- Använda Secret Manager-verktyget
Warning
Hemligheter bör aldrig läggas till i konfigurationsfiler.
Secret Manager-verktyget kan till exempel lagra databaslösenordet. När du skapar och använder Secret Manager består en anslutningssträng av Name=<database-alias>.
Mer information finns i avsnittet Konfiguration i ASP.NET Core-dokumentationen .
dotnet user-secrets init
dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"
Sedan använder du i scaffolding en anslutningssträng som består av Name=<database-alias>.
dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer
Warning
Den här artikeln använder en lokal databas som inte kräver att användaren autentiseras. Produktionsappar bör använda det säkraste tillgängliga autentiseringsflödet. Mer information om autentisering för distribuerade test- och produktionsappar finns i Säkra autentiseringsflöden.
I följande exempel visas anslutningssträngen som lagras i appsettings.json.
{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
},
}
Kontexten konfigureras vanligtvis i Program.cs med anslutningssträngen som läses från konfigurationen. Observera att metoden GetConnectionString letar efter ett konfigurationsvärde vars nyckel är ConnectionStrings:<connection string name>.
GetConnectionString kräver namnområdet Microsoft.Extensions.Configuration .
var conString = builder.Configuration.GetConnectionString("BloggingContext") ??
throw new InvalidOperationException("Connection string 'BloggingContext'" +
" not found.");
builder.Services.AddDbContext<BloggingContext>(options =>
options.UseSqlServer(conString));
WinForms och WPF-program
WinForms, WPF och ASP.NET 4-program har ett beprövat mönster för anslutningssträngar. Anslutningssträngen ska läggas till i programmets App.config fil eller Web.config när du använder ASP.NET. Anslutningssträng som innehåller känslig information, till exempel användarnamn och lösenord, bör skydda innehållet i konfigurationsfilen med skyddad konfiguration.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="BloggingDatabase"
connectionString="Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" />
</connectionStrings>
</configuration>
Tip
Inställningen providerName krävs inte för EF Core-anslutningssträngar som lagras i App.config eftersom databasprovidern har konfigurerats via kod.
Du kan sedan läsa anslutningssträngen med hjälp av API:et ConfigurationManager i kontextmetoden OnConfiguring . Du kan behöva lägga till en referens till ramverkssammansättningen System.Configuration för att kunna använda det här API:et.
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);
}
}
Universal Windows Platform (UWP)
Anslutningssträngar i ett UWP-program är vanligtvis en SQLite-anslutning som bara anger ett lokalt filnamn. De innehåller vanligtvis inte känslig information och behöver inte ändras när ett program distribueras. Därför är dessa anslutningssträngar vanligtvis bra att lämna i kod, som visas nedan. Om du vill flytta bort dem från koden stöder UWP begreppet inställningar i avsnittet Appinställningar i UWP-dokumentationen för mer information.
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");
}
}