Я создаю эту модель как часть моей первой структуры сущности кода
public class NewUserRegistration
{
[Key]
public int NewUserRegistrationId { get; set; }
}
Используя команду Update-Database -Verbose -Force
в консоли управления пакетами, я получаю это исключение во время этого бита обновления Applying automatic migration: 201211252223088_AutomaticMigration.
ALTER TABLE [dbo]. [NewUserRegistration] ADD [NewUserRegistrationId] [int] NOT NULL IDENTITY System.Data.SqlClient.SqlException(0x80131904): несколько столбцов идентификации, указанных для таблицы 'NewUserRegistration. Допускается только один столбец для каждой таблицы. в System.Data.SqlClient.SqlConnection.OnError(исключение SqlException, Boolean breakConnection, Action
1 wrapCloseInAction) at 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(TaskCompletionSource1 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 migrationStatements) в System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable1 migrationStatements) at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable
1 операция, Boolean понижение, Boolean auto) при System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, исходный код XDocument, XDocument targetModel, Boolean понижение) на System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, исходный код XDocument, XDocument targetModel, Boolean понижение) на System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable1 pendingMigrations, String targetMigrationId, String lastMigrationId)
1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable
в 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: a39395da-5f2b-48e0-bdac-b48d75a68c68 Несколько столбцы идентификации, указанные для таблицы "NewUserRegistration". Единственный столбец с идентификатором для таблицы.
Здесь явно указана только одна колонка Identity. Так почему это так?
Когда я делаю это, я не получаю исключения.
public class NewUserRegistration
{
[Key]
public int Id { get; set; }
}
Любые мысли о том, почему это так?
ИЗМЕНИТЬ
Я должен сказать, что меняю имя ключа. В комментариях говорится, что вы не можете просто сделать это. Как я могу бросить и воссоздать?
Лучше ли удалять базу данных из SQL, а затем снова запустить команду Update-Database
?