Строки подключения
Большинству поставщиков баз данных требуется строка подключения для подключения к базе данных. Строка подключения:
- Может содержать конфиденциальную информацию, которая должна быть защищена.
- Может потребоваться измениться при переходе приложения в разные среды, такие как разработка, тестирование и рабочая среда.
Дополнительные сведения см. в разделе "Безопасные потоки проверки подлинности"
ASP.NET Core
Конфигурация ASP.NET Core может хранить строка подключения с различными поставщиками:
- В файле или
appsettings.json
файлеappsettings.Development.json
. - В переменной среды
- Использование Azure Key Vault
- Использование средства диспетчера секретов
Предупреждение
Секреты никогда не следует добавлять в файлы конфигурации.
Например, средство диспетчера секретов может хранить пароль базы данных. При создании шаблонов и использовании диспетчера секретов строка подключения состоит из Name=<database-alias>
.
Дополнительные сведения см. в разделе "Конфигурация" документации по ASP.NET Core.
dotnet user-secrets init
dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"
Затем в шаблоне используйте строка подключения, состоящий из Name=<database-alias>
.
dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer
Предупреждение
В этой статье используется локальная база данных, которая не требует проверки подлинности пользователя. Рабочие приложения должны использовать самый безопасный поток проверки подлинности. Дополнительные сведения о проверке подлинности для развернутых тестовых и рабочих приложений см. в разделе "Безопасные потоки проверки подлинности".
В следующем примере показан строка подключения, хранящийся в appsettings.json
.
{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
},
}
Контекст обычно настраивается с Program.cs
помощью строка подключения считывания из конфигурации. Обратите внимание, что метод GetConnectionString ищет значение конфигурации, ключ которого имеет значение ConnectionStrings:<connection string name>
. GetConnectionString
требуется пространство имен 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 и WPF
WinForms, WPF и ASP.NET 4 приложения имеют проверенный и проверенный шаблон строка подключения. Строка подключения следует добавить в файл приложения App.config
или Web.config
при использовании ASP.NET. Строка подключения, содержащая конфиденциальную информацию, например имя пользователя и пароль, должна защищать содержимое файла конфигурации с помощью защищенной конфигурации.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="BloggingDatabase"
connectionString="Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" />
</connectionStrings>
</configuration>
Совет
Параметр providerName
не требуется для ef Core строка подключения, хранящихся в app.config, так как поставщик базы данных настроен с помощью кода.
Затем можно прочитать строка подключения с помощью ConfigurationManager
API в методе контекстаOnConfiguring
. Чтобы использовать этот API, может потребоваться добавить ссылку на сборку платформы System.Configuration
.
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);
}
}
Универсальная платформа Windows (UWP)
Строки подключения в приложении UWP обычно являются подключением SQLite, которое просто указывает локальное имя файла. Обычно они не содержат конфиденциальную информацию и не нужно изменять как приложение развертывается. Таким образом, эти строка подключения обычно хорошо остаться в коде, как показано ниже. Если вы хотите переместить их из кода, UWP поддерживает концепцию параметров, см . в разделе "Параметры приложения" документации по UWP.
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");
}
}