c# - visual - actualizar la base de datos desde la consola del administrador de paquetes en el entorno de código primero
nuget install (5)
¿Dónde colocar la cadena de conexión?
No es necesario que lo especifique con cada comando en la consola del administrador de paquetes. Puede ponerlo en appsettings.json en el proyecto donde reside su clase DbContext (lea "de la clase derivada DbContext").
{
"ConnectionStrings": {
"MyConnectionString": "Server=yourServer;Port=5432;Database=yourDatabase;User Id=yourDatabaseUsername;Password=yourDatabasePassword;"
}
}
Se utilizará para las migraciones.
Importante: si tiene varios proyectos en su solución, debe seleccionar el proyecto en el menú desplegable ''Proyecto predeterminado'' (en la Consola del administrador de paquetes) y debe configurar el proyecto como su proyecto de inicio (en el Explorador de soluciones).
Si no lo hace, es posible que se use appsettings.json incorrecto con una cadena de conexión incorrecta / diferente.
Esta fue mi experiencia con EF Core 2.1 y probablemente se aplique a las otras versiones de EF.
Código Primer Ambiente
Estoy tratando de actualizar la base de datos desde la consola del administrador del paquete. Si mi clase de dominio cambia, tengo que eliminar y crear la base de datos, en lugar de eliminar la base de datos, ¿cómo puedo actualizar la base de datos?
Ya lo he probado leyendo algunos blogs en google.
comandos
PM> Install-Package EntityFramework
Al usar este comando instalo el Entity Framework exitosamente.
PM> Enable-Migrations
Al usar este comando, creó el archivo de migración en mi proyecto.
PM> Update-Database
Al usar este comando, puedo actualizar la tabla pero tengo un problema aquí .
Error
Especifique el indicador ''-Verbose'' para ver las instrucciones SQL que se aplican a la base de datos de destino. System.Data.SqlClient.SqlException (0x80131904): Se produjo un error específico de la instancia o relacionado con la red al establecer una conexión a SQL Server. El servidor no se encontró o no estaba accesible. Verifique que el nombre de la instancia sea correcto y que SQL Server esté configurado para permitir conexiones remotas.
La duda esta aqui
A veces puede actualizarse si solo un campo cambia en la clase POCO . Por ejemplo, he actualizado la mayor cantidad de clases de dominio , ¿Cómo puedo actualizar la base de datos desde la consola del administrador de paquetes? Alguna idea ?
Necesita actualizar SSDT vaya a herramientas> extensión y actualizaciones> actualizaciones> herramientas de datos del servidor SQL
Parece que tienes múltiples problemas. Respecto a no querer eliminar y volver a crear la base de datos, eso está determinado por el inicializador de su base de datos. Si desea utilizar migraciones, cambie a MigrateDatabaseToLatestVersion. http://www.codeguru.com/csharp/article.php/c19999/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm
En segundo lugar, no importa cuántos campos cambie, se integrarán en una única migración en función de los cambios de la última migración.
En tercer lugar, como han señalado los demás, parece que tiene un problema de cadena de conexión. Si bien puede agregarlo a Add-Migration y Update-Migration, probablemente lo solucione en la aplicación. Puse el mío en el constructor de mi contexto, que apunta a mi archivo de configuración (web.config para ASP.NET).
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext()
: base("MyConnection", throwIfV1Schema: false)
{
Database.SetInitializer<ApplicationDbContext>(new MigrateDatabaseToLatestVersion<ApplicationDbContext, MyObjextContextMigration>());
}
...
Puede especificar la cadena de conexión a través ConnectionString
parámetro ConnectionString
:
Update-Database -ConnectionString "data source=server_name;initial catalog=db_name;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" -ConnectionProviderName "System.Data.SqlClient" -Verbose
También debe usar este parámetro con el mismo valor para el comando Add-Migration
:
Add-Migration Version_Name -ConnectionString "data source=server_name;initial catalog=db_name;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" -ConnectionProviderName "System.Data.SqlClient" -Verbose
solía
Enable-Migrations -EnableAutomaticMigrations -Force
entonces
Update-Database
Y esto migró mis cambios (columnas adicionales) mientras preservaba mis datos de prueba. Creo que esta es la opción más perezosa en prototipos.