Estoy usando EntityFramework en .NET para manejar las migraciones de bases de datos. Por ejemplo, dotnet ef migrations list --project My.Project --context MyDbContext .
Sin embargo, algunos de estos comandos del marco de la entidad requieren una cadena de conexión para conectarse a la base de datos y ver qué es qué:
Build started... Build succeeded. Args are: Schema Name: myschema Connection string: Connection string not set up. No connection string works when adding a migration (EF compares to the snapshot.cs file) but you will need a connection string to apply a migration. Connection string not set up in environment variable: 'ConnectionString:SchemaAdmin'. Set the connection string in the Package Manager Console first: $env:ConnectionString:SchemaAdmin='<replace with connection string>' Así que necesito configurar una variable de entorno llamada ConnectionString:SchemaAdmin que contenga la cadena de conexión para mi base de datos.
Sin embargo, esto no es fácil, ya que hay dos puntos en el nombre de la variable de entorno:
$ fo:o=bar bash: fo:o=bar: command not found $ fo\:o=bar; echo $foo bash: fo:o=bar: command not found¿Cómo se supone que debo hacer esto?
La forma que encontré para resolver esto fue usar AddJsonFile en un generador en el Inicio (lo que le permite encontrar la configuración almacenada en el archivo appsettings.json) y luego usar eso para establecer una variable _config privada
public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); _config = builder.Build(); }Y luego podría establecer la cadena de configuración de la siguiente manera:
var connectionString = _config.GetConnectionString("DbContextSettings:ConnectionString");