vehicle online official number nmvtis national motor information gov data check autocheck entity-framework nuget ef-migrations

entity-framework - online - title number search



Vuelva a crear la tabla con Entity Framework 5 y nuget (3)

Encontré mi respuesta.

Eliminé la fila en [dbo]. [__ MigrationHistory] que correspondía a mi migración

Luego borré el nuevo archivo de migración

Volví a ejecutar la migración de adición

y luego volver a ejecutar la base de datos de actualización -verbose

Estoy usando Code First para crear una tabla.

Creé la clase, el archivo de mapeo y emití el comando add-migration en nuget y luego el comando update-database

Entonces cambié la clase y como un idiota borré la tabla.

He eliminado el archivo de clase de migración

Emití un comando de migración adicional

Cuando emito el comando update-database, aparece el siguiente error:

System.Data.SqlClient.SqlException (0x80131904): No se puede encontrar el objeto "dbo.CorrectiveActionPlan" porque no existe o no tiene permisos. at System.Data.SqlClient.SqlConnection.OnError (es una excepción), una organización de los Estados Unidos, 1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action Unidos. .ThrowExceptionAndWarning (TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) en System.Data.SqlClient.TdsParser.TryRun (runBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader corriente de datos, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean y DataReady) en System.Data.SqlClient.SqlCommand. RunExecuteNonQueryTds (String methodName, Boolean async, Int32 timeout) en System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (tipo de tarea) en 1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable 1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable ) en los 1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable de 1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable de las personas. .Migrations.Infrastructure.MigratorBase.ExecuteStatements (IEnumerable 1 migrationStatements) at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable 1 1 migrationStatements) at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable , Boolean downgrading, Boolean auto.). .DbMigrator.ApplyMigration (DbMigration migracion, DbMigration lastMigration) en System.Data.Entity.Migrations.Infrastructure.MigratorLoggingD.p.A.P.P.P.A.A. 1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable
1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable
1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable
1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.DbMigrator.Update (String targetMigration) en System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update (String targetMigration.Upte.univacamercado). () at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run () ClientConnectionId: a6e92a35-cc9e-4867-97a5-0a274081d853 No se puede encontrar el objeto "dbo.CorrectiveActionPlan" porque no existe o no existe. permisos

¿Cómo fuerzo a EF a recrear la tabla?


Existen algunas opciones que guardo en mi arsenal para las migraciones de código primero y dependen de por qué necesita eliminar tablas o eliminar los registros. Aquí están mis métodos:

  • Si modificó los modelos y las asignaciones están causando un error que le impide no poder actualizar las tablas, podría eliminar toda la base de datos utilizando SQL Management Server Studio y eliminar la carpeta de migración. Es posible que desee guardar una secuencia de comandos para volver a llenar sus datos de prueba utilizando un script sql o guarde su archivo Configuration.cs y cuando ejecute el comando de actualización de la base de datos, los datos se volverán a completar.

    Este es un ejemplo de secuencia de comandos para un procedimiento almacenado para simplemente eliminar datos de la tabla:

    USE [DatabaseName] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[sp_DeleteAllYardPenaltyRecords] AS EXEC sp_MSForEachTable ''ALTER TABLE ? NOCHECK CONSTRAINT ALL'' EXEC sp_MSForEachTable ''ALTER TABLE ? DISABLE TRIGGER ALL'' EXEC sp_MSForEachTable ''DELETE FROM ?'' EXEC sp_MSForEachTable ''ALTER TABLE ? CHECK CONSTRAINT ALL'' EXEC sp_MSForEachTable ''ALTER TABLE ? ENABLE TRIGGER ALL'' EXEC sp_MSFOREACHTABLE ''SELECT * FROM ?''

  • Si solo desea eliminar los datos, puede usar el comando de la consola del administrador de paquetes: PM> Update-Database -TargetMigration $InitialDatabase y eliminar el archivo de migración creado, es decir: ''201502210525393_example_with_error.cs'' y volver a ejecutar ''Add-Migration new_example.cs '' otra vez. Esto pone la base de datos de nuevo a su instantánea inicial

  • O puede usar su método: elimine la fila en [dbo].[__MigrationHistory] y el archivo de migración, es decir: ''201502210525393_example_with_error.cs'', luego vuelva a ejecutar add-migration y update-database


Simplemente puede eliminar la base de datos y luego, desde la consola del administrador de paquetes, ejecutar el comando ''actualizar base de datos'', todo se recreará, incluidas las actualizaciones que haya realizado.