Cadenas de conexión
La mayoría de los proveedores de bases de datos requieren algún tipo de cadena de conexión para conectarse a la base de datos. A veces, esta cadena de conexión contiene información confidencial que debe protegerse. Es posible que también tenga que cambiar la cadena de conexión a medida que mueve la aplicación entre entornos, como desarrollo, pruebas y producción.
ASP.NET Core
En ASP.NET Core el sistema de configuración es muy flexible y la cadena de conexión podría almacenarse en , una variable de entorno, el almacén de secretos de usuario u otro origen appsettings.json de configuración. Consulte la sección Configuración de la documentación ASP.NET Core para obtener más detalles.
Por ejemplo, puede usar la herramienta Administrador de secretos para almacenar la contraseña de la base de datos y, después, en scaffolding, usar una cadena de conexión que simplemente consta de .
dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"
dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer
O bien, en el ejemplo siguiente se muestra la cadena de conexión almacenada en appsettings.json .
{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
},
}
A continuación, el contexto se configura normalmente en Startup.cs con la cadena de conexión que se lee de la configuración. Tenga en GetConnectionString() cuenta que el método busca un valor de configuración cuya clave es ConnectionStrings:<connection string name> . Debe importar el espacio de nombres Microsoft.Extensions.Configuration para usar este método de extensión.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<BloggingContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));
}
Aplicaciones WPF de WinForms &
WinForms, WPF y ASP.NET 4 aplicaciones tienen un patrón de cadena de conexión probado. La cadena de conexión debe agregarse al archivo de App.config de la aplicación (Web.config si usa ASP.NET). Si la cadena de conexión contiene información confidencial, como el nombre de usuario y la contraseña, puede proteger el contenido del archivo de configuración mediante la configuración protegida.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="BloggingDatabase"
connectionString="Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" />
</connectionStrings>
</configuration>
Sugerencia
El valor no es necesario en EF Core cadenas de conexión almacenadas en App.config porque el proveedor de base de datos providerName se configura mediante código.
A continuación, puede leer la cadena de conexión mediante la ConfigurationManager API en el método del OnConfiguring contexto. Es posible que tenga que agregar una referencia al ensamblado del marco System.Configuration para poder usar esta API.
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);
}
}
Plataforma universal de Windows (UWP)
Las cadenas de conexión de una aplicación para UWP suelen ser una conexión de SQLite que solo especifica un nombre de archivo local. Normalmente no contienen información confidencial y no es necesario cambiarla a medida que se implementa una aplicación. Por lo tanto, estas cadenas de conexión normalmente se pueden dejar en el código, como se muestra a continuación. Si quieres sacarlos del código, UWP admite el concepto de configuración, consulta la sección App Configuración de la documentación de UWP para obtener más información.
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");
}
}