update remove migrations framework force first existing enable code automatic c# sql-server entity-framework code-first-migrations

c# - remove - Código EF primero: el tiempo de espera ha caducado. El tiempo de espera transcurrido antes de la finalización



revert migration entity framework core (5)

Disculpas por esta pregunta extrañamente formulada. No sé cuál es el problema real, pero espero que alguien pueda darme algunas ideas.

Recibo el siguiente error al intentar ejecutar migraciones:

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out

Es interesante notar que esto no está sucediendo en mi computadora portátil, pero en mi VM (azul - grande) esto está ocurriendo con una tasa de falla del 100%.

Estoy usando Ef 6.0.0 -rc1 . Tenga en cuenta que actualizar EF no es una opción. Si actualizo a EF 6.0.0 o 6.0.1 obtendré el siguiente error con una tasa de error del 100%:

Errores durante la primera migración de Code First

También he cronometrado el error. Se tarda aproximadamente 1,5 minutos para activar el error. Cuando se ejecuta con el indicador -Verbose , se intentaba crear 200 tablas con índices. Copiar la consulta SQL y excitarla en SSMS toma 5 segundos.

Algunas cosas que me cansé pero no funcionó:

1) ¡Configurando ObjectContext.CommandTimeout = 36000 // 10 hours! como se indica aquí:

https://stackoverflow.com/a/6234593/305469

2) Configuración del tiempo de espera en la cadena de conexión en "web.config":

connectionString="Data Source=localhost;Initial Catalog=myDB;Integrated Security=SSPI;Connection Timeout=36000"

3) Configurando la transacción "machine.config" maxTimeout:

<system.transactions> <machineSettings maxTimeout="00:00:00" /> </system.transactions>

4) Configuración de "tiempo de espera de consulta remota" en el servidor SQL

USE MyDB; GO EXEC sp_configure ''remote query timeout'', 0 ; GO RECONFIGURE ; GO

Entonces, ¿qué está pasando? ¿Cómo es que CommandTimeout no está siendo respetado? ¿Alguna sugerencia?

Seguimiento completo de la siguiente manera:

System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at 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, Boolean async, Int32 timeout) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TInterceptionContext,TResult](Func`1 operation, TInterceptionContext interceptionContext, Action`1 executing, Action`1 executed) at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext) at System.Data.Entity.Internal.InterceptableDbCommand.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.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbConnection connection) at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32.<ExecuteStatements>b__2e() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation) at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation) at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements) at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements) at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable`1 operations, IEnumerable`1 systemOperations, Boolean downgrading, Boolean auto) at System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration) at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration) at System.Data.Entity.Migrations.DbMigrator.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.UpdateInternal(String targetMigration) at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.<Update>b__b() at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration) at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run() at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner) at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force) at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0() at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) ClientConnectionId:8cbbc70c-8182-417e-9aca-4603f797340d Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.


Acabo de tener el mismo problema, sé que este hilo tiene un año de antigüedad, pero tal vez ayude a alguien más.

Estaba tratando de crear la base de datos en la entidad 5 usando la Consola del administrador de paquetes usando la cadena de conexión a continuación.

update-database -ConfigurationTypeName My.Project.EF.Migrations.Configuration -ConnectionStringName MyDatabaseDev -ProjectName Project.Name -StartUpProjectName Database.Name

Cada vez que lo ejecuté me sale el error de abajo.

Tiempo agotado. El período de tiempo de espera transcurrido antes de la finalización de la operación o el servidor no responde.

Para solucionarlo, simplemente agregué el parámetro -force y se realizó correctamente.


En el constructor de la clase Configuration.cs (en la carpeta de migración), agregue la propiedad CommandTimeout = Int32.MaxValue;


Me encontré con esto en mi entorno de producción porque estaba generando consultas como las de aquí: ¿Por qué Entity Framework 6 genera consultas SQL complejas para búsquedas simples?

Esto está realmente relacionado con un error en esta versión de EF: https://entityframework.codeplex.com/workitem/2083

Cambiaron la semántica nula predeterminada de 5 a 6, así que supongo que tuvo el mismo problema que tuve después de actualizar. Mi máquina tenía una fracción de los datos como mi instalación remota y, hasta que llegué a producción, no sabía que tenía un problema de rendimiento. Las consultas a menudo producirán un escaneo de tablas que expirará para tablas más grandes.

Para volver a cambiarlo para que funcione como EF5, debes configurar:

DbContextConfiguration.UseDatabaseNullSemantics = true

Consulte aquí: http://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.dbcontextconfiguration.usedatabasenullsemantics(v=vs.113).aspx

El error se corrigió en EF 6.1, pero aún tiene que configurar la opción anterior para obtener condiciones simples donde.


Para mí, el problema fue que la secuencia de comandos de migración tardó mucho tiempo en ejecutarse (15 minutos).

Así es como resolví el problema:
1. Ejecute update-database -script ( -force puede ser necesario)
2. Copie este resultado de script SQL y ejecútelo en SQL Server Management Studio.


Reinicié el servicio de SQL Server (Win7 - Administración de equipos> Servicios y aplicaciones> Servicios)