Issue in EF5 - Codefirst Migration
Altering colums to change them to No Nullable with a default value fails because EF doesn't create unique constraint name.
ALTER TABLE [dbo].[ReferencesBase] ADD CONSTRAINT __DF_DateEnd__ DEFAULT '2200-12-31T00:00:00.000' FOR [DateEnd]
ALTER TABLE [dbo].[ReferencesBase] ALTER COLUMN [DateEnd] [datetime] NOT NULL
ALTER TABLE [dbo].[Billing] ADD CONSTRAINT __DF_DateEnd__ DEFAULT '2200-12-31T00:00:00.000' FOR [DateEnd]
System.Data.SqlClient.SqlException (0x80131904): Il existe déjà un objet nommé __'DF_DateEnd'__ dans la base de données.
Impossible de créer la contrainte. Voir les erreurs précédentes.
à System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
à System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
à System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
à System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
à System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout)
à System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
à System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
à System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement)
à System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement)
à System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements)
à System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements)
à System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable`1 operations, Boolean downgrading, Boolean auto)
à System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
à System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
à System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
à System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
à System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
à System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
à System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
à System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:624a8a50-244c-41a5-80b4-a0dd6f1f4223
This issue was reported here and was supposed to be fixed in the EF5 RTM
http://stackoverflow.com/questions/9830216/ef-4-3-1-migration-exception-altercolumn-defaultvaluesql-creates-same-default/
Comments: Fixed in changeset ab45dcea9895085abc2707f79573118bebd647cd
Altering colums to change them to No Nullable with a default value fails because EF doesn't create unique constraint name.
ALTER TABLE [dbo].[ReferencesBase] ADD CONSTRAINT __DF_DateEnd__ DEFAULT '2200-12-31T00:00:00.000' FOR [DateEnd]
ALTER TABLE [dbo].[ReferencesBase] ALTER COLUMN [DateEnd] [datetime] NOT NULL
ALTER TABLE [dbo].[Billing] ADD CONSTRAINT __DF_DateEnd__ DEFAULT '2200-12-31T00:00:00.000' FOR [DateEnd]
System.Data.SqlClient.SqlException (0x80131904): Il existe déjà un objet nommé __'DF_DateEnd'__ dans la base de données.
Impossible de créer la contrainte. Voir les erreurs précédentes.
à System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
à System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
à System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
à System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
à System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout)
à System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
à System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
à System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement)
à System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement)
à System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements)
à System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements)
à System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable`1 operations, Boolean downgrading, Boolean auto)
à System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
à System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
à System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
à System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
à System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
à System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
à System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
à System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:624a8a50-244c-41a5-80b4-a0dd6f1f4223
This issue was reported here and was supposed to be fixed in the EF5 RTM
http://stackoverflow.com/questions/9830216/ef-4-3-1-migration-exception-altercolumn-defaultvaluesql-creates-same-default/
Comments: Fixed in changeset ab45dcea9895085abc2707f79573118bebd647cd