Поделиться через


Строки подключения

Большинству поставщиков баз данных требуется строка подключения для подключения к базе данных. Строка подключения:

  • Может содержать конфиденциальную информацию, которая должна быть защищена.
  • Может потребоваться измениться при переходе приложения в разные среды, такие как разработка, тестирование и рабочая среда.

Дополнительные сведения см. в разделе "Безопасные потоки проверки подлинности"

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");
    }
}