índice visual studio servicio restaurar puede proyecto paquetes origen org nupkg nuggets net instalar index encuentra como cargar archivo c# sql-server visual-studio-2012 entity-framework-6 ef-migrations

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

  1. Al usar este comando instalo el Entity Framework exitosamente.

    PM> Enable-Migrations

  2. Al usar este comando, creó el archivo de migración en mi proyecto.

    PM> Update-Database

  3. 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.