Я создаю эту модель как часть моего кода первой сущности.
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, логическое значение breakConnection, Action
1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj, логическое значение callerHasConnectionLock, логическое значение 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 asyncq, IntternalNCommandInQueryl timeout) в System.Data.Sk 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, логическое понижение версии, логическое автоматическое) в System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, XDocument sourceModel, XDocument targetMode l, логическое понижение версии) в System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, XDocument sourceModel, XDocument targetModel, логическое понижение версии) в 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 указано несколько столбцов идентификации. Допускается только один столбец идентификаторов на таблицу.
Очевидно, что указан только один столбец идентификаторов. Так почему же это так?
Когда я делаю это, я не получаю никаких исключений.
public class NewUserRegistration
{
[Key]
public int Id { get; set; }
}
Любые мысли о том, почему это так?
ИЗМЕНИТЬ
Я должен сказать, что я меняю имя ключа. Комментарии говорят, что вы не можете просто так сделать. Как я могу удалить и воссоздать?
Лучше всего удалить базу данных из SQL, а затем снова запустить команду Update-Database
?
NewUserRegistrationId
? Столбцы идентификаторов нельзя просто изменить. - person Ladislav Mrnka   schedule 26.11.2012