コードファーストエンティティフレームワークの一部としてこのモデルを作成しています
public class NewUserRegistration
{
[Key]
public int NewUserRegistrationId { get; set; }
}
Update-Database -Verbose -Force
Package Manger Consoleでコマンドを使用すると、更新のこのビット中にこの例外が発生しますApplying automatic migration: 201211252223088_AutomaticMigration.
ALTERTABLE[dbo]。[NewUserRegistration]ADD[NewUserRegistrationId] [int] NOT NULL IDENTITY System.Data.SqlClient.SqlException(0x80131904):テーブル'NewUserRegistration'に複数のID列が指定されています。テーブルごとに1つのID列のみが許可されます。System.Data.SqlClient.SqlConnection.OnError(SqlException例外、ブール値breakConnection、アクションで
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、Copy dataReady)at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName、Boolean async、Int32 timeout)at 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)atSystem.Data.Entity.Migrations.Infrastructure.MigratorBase。 ExecuteStatements(IEnumerable1 migrationStatements) at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable
System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String)での1つの操作、ブール値のダウングレード、ブール値の自動)物質移行ID、XDocument sourceModel、XDocument targetModel、ブール値のダウングレード)at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable 1 expectedMigrations、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)at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore ()at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()ClientConnectionId:a39395da-5f2b-48e0-bdac-b48d75a68c68テーブル'NewUserRegistration'に複数のID列が指定されています。テーブルごとに1つのID列のみが許可されます。
明らかに、指定されたID列は1つだけです。では、なぜこれが当てはまるのでしょうか。
これを行うと、例外は発生しません。
public class NewUserRegistration
{
[Key]
public int Id { get; set; }
}
なぜこれが当てはまるのかについて何か考えはありますか?
編集
キーの名前を変更していると言わなければなりません。コメントはあなたがこれをすることはできないと言っています。ドロップして再作成するにはどうすればよいですか?
Update-Database
SQLからデータベースを削除してから、コマンドを再実行するのが最善ですか?