データ アクセス コードを生成するために CodeSmith を必要とする古い ORM である .NetTiers を使用する既存のプロジェクトで動作する移行フレームワークを探しています。
ラウンドハウスの経験があり、使用に成功しています。また、Octopus Deploy からデプロイを実行するときに、スキーマの変更を自動的にデプロイすることもできます。これは単なる SQL スクリプトの集まりであるため、かなり簡単です。
FluentMigrator への移行に関心があります。私は FM DSL が好きで、この SO の質問は非常に便利であることがわかりましたが、理解できないことがいくつかあります。
- 既存のデータベース スキーマ [*] をインポートする正しい方法は何ですか?
- 本番環境に移行を展開する正しい方法は何ですか [**]?
[*] SQL Server ツールを使用して単一のスクリプトを生成し、最初の移行として ExecuteEmbeddedSql を使用すると仮定しています。あれは正しいですか?
[**] 移行を実行するには、主に 3 つの方法があるようです (コマンド ライン、NAnt ランナー、MSBuild ランナー)。実行するには、データベースにアクセスする必要があります。これを PROD 環境にデプロイするとします。開発者とビルド サーバーは、この環境にアクセスできません。これらのランナーをその環境に対してどのように実行しますか?
通常のデプロイ プロセスでは、デプロイの一部としてデプロイする必要がある SQL スクリプトのコレクションを作成します。Ops はこれらを展開の一部として実行します。Octopus Deploy プロセス (powershell) の一部として自動的に実行されるか、展開が Octopus の外部にある場合は手動で実行されます)。
この特定のプロジェクトで発生する複雑な問題の 1 つは、.NetTiers です。これは、.NetTiers を使用して CodeSmith コード生成を実行し、データ アクセス層を構築してから、それらのエンティティとデータ サービスに対してコードを作成する必要があることを意味します。したがって、ワークフローは次のようになります。
- 書き込み移行
- 移行を実行してデータベースをアップグレードします (特定の .NetTiers データベースをターゲットにします)。
- 特定の .NetTiers データベース (中央ビルド サーバー) に対して .NetTiers を実行します。
- 新しく生成された .NetTiers エンティティ、データベース フィールドなどに対するコード
.NetTiers をダンプしたいのですが、残念ながらリファクタリングは現在実行可能なオプションではありません。