Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 27080|Respuesta: 0

[Fuente] Actualiza tu base de datos con la migración Code First

[Copiar enlace]
Publicado en 7/6/2018 15:56:58 | | |
Migración Code First, puedes actualizar tus cambios en el modelo de tu código a la base de datos; para usar la migración Code First, primero tienes que abrirla:

En la consola Tools-NuGet Package Manager-Package Manager, escribe: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, pulse Enter. (Ten en cuenta que necesitas definir el contexto que quieres usar porque el contexto de autenticación se crea automáticamente al crear el proyecto.) Una vez hecho, se crea una carpeta Migraciones, que contiene una clase Configuration.cs.

En este punto, hay un paso extra necesario para que Code First funcione; si creas una migración ahora, intentará añadir la entidad contextual a la base de datos, y la migración fallará porque las tablas de Productos y categorías ya existen en la base de datos. Así que primero necesitamos crear una migración que se inicialice a vacía, y luego podemos añadir una migración a cualquier modificación.

PM> Actualización-Base de datos
Especifica la bandera "-Verbose" para ver las sentencias SQL aplicadas a la base de datos objetivo.
No hay migraciones explícitas pendientes.
Aplicación de la migración automática: 201806070740457_AutomaticMigration.
System.Data.SqlClient.SqlException (0x80131904): Un objeto llamado 'Account' ya existe en la base de datos.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   en System.Data.SqlClient.SqlInternalConnection.OnError(Excepción SqlException, Boolean breakConnection, Acción'1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, boolean callerHasConnectionLock, Boolean asyncClose)
   En System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, async booleano, timeout Int32, asyncWrite booleano)
   En System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   En System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   En System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c)
   En System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget objetivo, operación Func'3, TintterceptionContext interceptionContext, Acción'3 ejecutándose, Acción'3 ejecutada)
   En System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(comando DbCommand, DbCommandInterceptionContext interceptionContext)
   En System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   En System.Data.Entity.Migrations.DbMigrator.ExecuteSQL (MigrationInstruction migrationStatement, conexión DbConnection, transacción DbTransaction, DbInterceptionContext interceptionContexto)
   En System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, conexión DbConnection, transacción DbTransaction , DbInterceptionContexto interceptionContexto)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, conexión DbConnection, transacción DbTransaction, DbInterceptionContexto interceptionContexto)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatementWithinTransaction(IEnumerable'1 migrationStatements, transacción DbTransaction, DbInterceptionContext interceptionContexto)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatementWithinNewTransaction(IEnumerable'1 migrationStatements, conexión DbConnection, DbInterceptionContext interceptionContexto)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   en System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, conexión DbConnection)
   en System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30()
   En System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0()
   en System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation)
   En System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransactionExistingTransaction)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements)
   en System.Data.Entidad.Migraciones.Infraestructura.MigratorBase.EjecutarSentencias(IEnumerable'1 migrationStatements)
   En System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, Boolean degradación, auto booleano)
   en System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, degradación booleana)
   En System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean degradación)
   en System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   en System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   en System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   En System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   en System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   en System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Acción debeSucederDeMantenerDeDatabase)
   en System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   En System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   en System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   En System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:dcf676a8-d2b3-4232-89dd-35e15fb8160d
Número de error: 2714, Estado: 6, Clase: 16
Un objeto llamado 'Account' ya existe en la base de datos.

Si te encuentras con el error anterior, escribe Añadir Iniciales de Migración Crear -IgnorarCambios en la consola del Gestor de Paquetes para crear una migración vacía.

El logotipo de IgnoreChanges se utiliza para asegurar que no se haga nada en esta migración. Hacerlo crea una tabla de migraciones en la base de datos, que es una instantánea de la base de datos antes de que se migre.

A continuación, introduce update-database en la consola del gestor de paquetes para actualizar la migración de inicialización a la base de datos.

Una vez inicializada la migración, actualiza la base de datos usando la migración Code First:

Añade la columna Descrip{filter}tion a la tabla de Producto y establece la longitud en 50, ([StringLength(50)]); Ahora añade una nueva migración para actualizar los cambios en la base de datos.

En la consola del Gestor de Paquetes, introduzca:Add-Migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) añadirá un archivo a la carpeta Migraciones para describir la migración. A continuación, en la consola del Gestor de Paquetes, escribe:

base de datos de actualización, la nueva columna se añadirá a la tabla de Productos.





Anterior:Demostración de conexión de comunicación por puerto TCP
Próximo:asp.net mvc utiliza la vista local RenderAction para cargar datos dinámicos
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com