sto creando questo modello come parte del mio codice prima Entity FrameworkEntity Framework 5 Colonne di identità multiple specificate per la tabella. È consentita una sola colonna di identità per ogni tabella
public class NewUserRegistration
{
[Key]
public int NewUserRegistrationId { get; set; }
}
Utilizzando il comando Update-Database -Verbose -Force
nel pacchetto Manger ConsoleI ottenere questa eccezione durante il questo bit dell'aggiornamento Applying automatic migration: 201211252223088_AutomaticMigration.
.
ALTER tABLE [dbo] [NewUserRegistration] ADD [NewUserRegistrationId] [int] NOT NULL System.Data.SqlClient.SqlException iDENTITÀ (0x80131904): colonne di identità multiple specificati per la tabella 'NewUserRegistration'. È consentita una sola colonna Identity per tabella. a System.Data.SqlClient.SqlConnection.OnError (eccezione SqlException, breakConnection booleano, Azione 1
1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
wrapCloseInAction) a System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj, booleano callerHasConnectionLock, booleano asyncClose) a sistema. Data.SqlClient.TdsParser.TryRun (runBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader datastream, bulkCopyHandler BulkCopySimpleResultSet, TdsParserStateObject stateObj, booleano & dataReady) a System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds (String methodName, async booleano, Int32 timeout) a S ystem.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (TaskCompletionSource migrationStatements) a System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements (IEnumerable1 migrationStatements) at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable
1 operazioni, booleano declassamento, auto booleano) a System.Data. Entity.Migrations.DbMigrator.AutoMigrate (String migrationId, XDocument sourceModel, XDocument targetModel, booleano downgrading) a System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate (String migrationId, XDocument sourceModel, XDocument targetModel, booleano declassamento) a System.Data.Entity.Migrations.DbMigrator.Upgrade (IEnumerable pendingMigrations, String targetMigrationId, String lastMigrationId)
a System.Data.Entity.Migrations.DbMigrator.Update (String targetMigration) a System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update (String targetMigration) a System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore() a System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run() ClientConnectionId: a39395da-5f2b-48e0-BDAC-b48d75a68c68 Più colonne di identità specificate per la tabella "NewUserRegistration". È consentita una sola colonna Identity per tabella.
C'è chiaramente una sola colonna di identità specificata. Allora, perché è così?
Quando faccio questo non ottengo eccezione.
public class NewUserRegistration
{
[Key]
public int Id { get; set; }
}
Qualche idea sul perché questo è il caso?
EDIT
Devo dire che sto cambiando il nome della chiave. I commenti dicono che non puoi farlo solo Come posso abbandonare e ricreare?
È meglio eliminare il database da SQL e quindi eseguire nuovamente il comando Update-Database
?
Sembra che si sta cambiando tabella esistente. Hai avuto altra chiave nell'entità prima di aver aggiunto "NewUserRegistrationId'? Le colonne di identità non possono essere semplicemente cambiate. –
sì, quindi come faccio a istruire la cosa a rilasciare e ricreare la tabella. – Peter