許可されて私はUpdate-Database -Verbose -Force
コマンドを使用して私のコード第1エンティティフレームワークEntity Framework 5テーブルに複数のID列が指定されています。テーブルごとに1つだけID列が
public class NewUserRegistration
{
[Key]
public int NewUserRegistrationId { get; set; }
}
の一環として、このモデルを作成しておりますパッケージマネージャConsoleIでの更新のこのビットの間に、この例外を取得Applying automatic migration: 201211252223088_AutomaticMigration.
ALTER TABLE [DBO] [NewUserRegistration] ADD [NewUserRegistrationId] [INT] NOT NULL IDENTITY System.Data.SqlClient.SqlException (0x80131904):表に指定された複数のID列'NewUserRegistration'。表ごとに1つのID列のみが許可されます。 システムで System.Data.SqlClient.TdsParser.ThrowExceptionAndWarningでSystem.Data.SqlClient.SqlConnection.OnError(SQLException例外、 ブールbreakConnection、アクション
1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction)(TdsParserStateObject stateObj、ブールcallerHasConnectionLock、ブールasyncClose)で 。 Data.SqlClient.TdsParser.TryRun(runBehavior runBehavior、 SqlCommandオブジェクトcmdHandler、SqlDataReaderのデータストリーム、 BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj、ブール& DATAREADY) System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTdsで(文字列 methodNameの、ブール非同期、のInt32タイムアウト): S System.DataでSystem.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerableを1 migrationStatements) at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable
1つの操作、ブール 格下げ、ブールオート)でystem.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource migrationStatements)。 System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(文字列 migrationId、XDocument sourceModel、XDocument targetModel、ブール でEntity.Migrations.DbMigrator.AutoMigrate(文字列 migrationId、XDocument sourceModel、XDocument targetModel、ブール 格下げ)ダウングレード)で System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(文字列 targetMigration)でSystem.Data.Entity.Migrations.DbMigrator.Update(文字列 targetMigration)でpendingMigrations、文字targetMigrationId、列lastMigrationId)
でSystem.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.RunでSystem.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore() () ClientConnectionId:a39395da-5f2b-48e0-BDAC-b48d75a68c68テーブル「NewUserRegistration」に対して複数の 識別列が指定されています。 1つのテーブルにつき1つの 識別列のみが許可されます。
明示的に1つのID列が指定されています。それでなぜこれが当てはまるのですか?
これを行うと例外はありません。
public class NewUserRegistration
{
[Key]
public int Id { get; set; }
}
なぜこのような考えがありますか?
EDIT
私は、キーの名前を変更していますと言う必要があります。コメントは、あなたがこれを行うことはできないと言います。どうすれば落として再作成できますか?
データベースをSQLから削除してから、Update-Database
コマンドをもう一度実行するのが最善でしょうか?
が見えます。 'NewUserRegistrationId'を追加する前にエンティティに他のキーを持っていましたか?アイデンティティ列は単に変更することはできません。 –
はい、テーブルを削除して再作成するように指示するにはどうすればいいですか? – Peter