1

背景: VS 2012

テーブルの移行を別々のクラスに分割したので、

クラス1、

[Migration(1306122)]
class M1306122CreateTableX: Migration
{...}

クラス2、

[Migration(1306123)]
class M1306123CreateTableY: Migration
{...}

など。移行番号を増やして新しいクラスを2回作成しましたが、(完全に有効なコードのように見えます)移行プロセスは新しいクラスを実行しません。エラーなどはありません。動かないだけです。

現在、バッチ ファイルを使用して移行を実行しています。

migrate.exe ^
 /connection "Server=(local)\SQLEXPRESS; Database=%2_Aggregated; Integrated Security=True" ^
 /db SqlServer2012 ^
 /target %1 ^
 /namespace DatabaseMigrations.Aggregated ^
 /nested

新しいクラスが含まれていない理由を調べるためにデバッグする方法はありますか?

4

2 に答える 2

0

私の経験では、これはほとんどの場合、移行 ID (番号) が正しくない移行に関係しています。最後に実行された移行よりも大きな数の移行のみが実行されます。

たとえば、以前に ID (番号) 3 の移行を実行してから、ID 2 の新しい移行を作成した場合、新しい移行を実行しようとすると、3 より大きい ID の移行のみが考慮されるため、スキップされます。 .

これは、データベースの VersionInfo テーブルを調べることで確認できます。Version 列の最大数が 1306122 または 1306123 より大きい場合は、問題が見つかりました。

于 2013-06-24T15:37:39.710 に答える