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

Большинству поставщиков баз данных требуется некоторая форма строка подключения для подключения к базе данных. Иногда эта строка подключения содержит конфиденциальную информацию, которую необходимо защитить. Вам также может потребоваться изменить строка подключения при перемещении приложения между средами, такими как разработка, тестирование и рабочая среда.

ASP.NET Core

В ASP.NET Core система конфигурации очень гибка, и строка подключения можно хранить в appsettings.json, переменную среды, хранилище секретов пользователя или другой источник конфигурации. Дополнительные сведения см. в разделе "Конфигурация" документации по ASP.NET Core.

Например, вы можете использовать средство диспетчера секретов для хранения пароля базы данных, а затем в шаблоне используйте строка подключения, из который просто состоит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

Или в следующем примере показан строка подключения, хранящийся вappsettings.json.

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

Затем контекст обычно настраивается с Startup.cs помощью строка подключения считывания из конфигурации. Обратите внимание, что GetConnectionString() метод ищет значение конфигурации, ключ которого имеет значение ConnectionStrings:<connection string name>. Чтобы использовать этот метод расширения, необходимо импортировать пространство имен Microsoft.Extensions.Configuration .

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

Приложения 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)

строки Подключение ion в приложении 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");
    }
}