プロジェクトを Entity Framework 4.3 にアップグレードし、プロジェクトで移行を有効にしました。
ただし、Update-Database コマンドを実行すると、次のエラーが発生します。
ターゲット データベースが EF 4.3 より前のバージョンの Code First で作成されており、移行履歴テーブルが含まれていないため、次の移行をスキャフォールディングできません。このデータベースに対して移行の使用を開始するには、現在のモデルがターゲット データベースと互換性があることを確認し、移行の更新プロセスを実行します。(Visual Studio では、パッケージ マネージャー コンソールから Update-Database コマンドを使用して、移行の更新プロセスを実行できます)。
基本的に、エラーが発生しているのと同じコマンド (Update-Database) を実行するように指示しています。
何か案は?
正確には「楽しい」方法ではありませんが、アプリに新しいデータベースを作成させ、「__MigrationHistory」というシステム テーブルを作成します。次に、次のスクリプトを実行して、古いデータベースにそのテーブルを作成しました。また、新しいデータベースに存在していた 1 行を古いデータベースにコピーするスクリプトも作成しました。
マイクロソフトまたはコミュニティの誰かがこれを行うためのより効率的な方法を知っている場合は、ここに投稿してください!
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[__MigrationHistory](
[MigrationId] [nvarchar](255) NOT NULL,
[CreatedOn] [datetime] NOT NULL,
[Model] [varbinary](max) NOT NULL,
[ProductVersion] [nvarchar](32) NOT NULL,
CONSTRAINT [PK___MigrationHistory] PRIMARY KEY CLUSTERED
(
[MigrationId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO