Entity Framework 5.0 とパワー ツールを使用して、小さなデータベースをリバース エンジニアリングしました。それから私はウェブサイトの開発を始めました。テーブルの 1 つで ID 列を IDENTITY 列にするのを忘れていたため、問題が発生しました。
そこで、コード ファースト マイグレーションを追加し、パッケージ マネージャー コンソールで update-database コマンドを使用して実行しました。これが私が書いた「Up」メソッドです。
public override void Up()
{
Sql("DELETE FROM dbo.Sections");
Sql("DELETE FROM dbo.QuestionInstances");
DropForeignKey("dbo.SectionInstances", "SectionID", "dbo.Sections");
DropForeignKey("dbo.QuestionInstances", "SectionID", "dbo.Sections");
DropTable("dbo.Sections");
CreateTable(
"dbo.Sections",
c => new
{
ID = c.Int(nullable: false, identity: true),
UniqueDescription = c.String(nullable: false, maxLength: 50),
Heading = c.String(maxLength: 500),
})
.PrimaryKey(t => t.ID);
AddForeignKey("dbo.SectionInstances", "SectionID", "dbo.Sections");
AddForeignKey("dbo.QuestionInstances", "SectionID", "dbo.Sections");
}
データベースを確認したところ、正常に変更されています。
エンティティ フレームワークがモデルを更新し、ID の明示的な設定を停止することを期待していましたが、保存しようとすると次のエラーが表示されるため、間違っているように見えます:「テーブル 'セクション' の ID 列に明示的な値を挿入できません」 IDENTITY_INSERT が OFF に設定されている場合」
列が ID 列になったことをエンティティ フレームワークに認識させるにはどうすればよいですか?