Строки подключения
Большинству поставщиков баз данных требуется некоторая форма строка подключения для подключения к базе данных. Иногда эта строка подключения содержит конфиденциальную информацию, которую необходимо защитить. Вам также может потребоваться изменить строка подключения при перемещении приложения между средами, такими как разработка, тестирование и рабочая среда.
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");
}
}