それぞれ移行が有効になっている、複数の EntityFramework コンテキストを含むプロジェクトがあります。を使用して完全な移行スクリプトを作成すると、Update-Database -SourceMigration $initialDatabase -script
コンテキストごとにスクリプトが取得されます。
ただし、このスクリプトは次のようなもので始まります。
DECLARE @CurrentMigration [nvarchar](max)
IF object_id('[dbo].[__MigrationHistory]') IS NOT NULL
SELECT @CurrentMigration =
(SELECT TOP (1)
[Project1].[MigrationId] AS [MigrationId]
FROM ( SELECT
[Extent1].[MigrationId] AS [MigrationId]
FROM [dbo].[__MigrationHistory] AS [Extent1]
WHERE [Extent1].[ContextKey] = N'Some.Configuration.Here'
) AS [Project1]
ORDER BY [Project1].[MigrationId] DESC)
IF @CurrentMigration IS NULL
SET @CurrentMigration = '0'
IF @CurrentMigration < '201506111916518_InitialCreate'
BEGIN
...
<migration code here>
...
END
ContextKey を使用して現在の移行を取得する方法に注意してください。見つからない場合は、最初の移行を行います。
最初の移行にはテーブルを作成するためのコードが含まれているため、事態は複雑になり__MigrationHistory
ます。これは、最初のスクリプトを実行した時点で既に存在していることは明らかです。
これはエッジケースのバグですか、それともここで何か間違っていますか?
前もって感謝します