1

私は Entity Framework 5 DB-First プロジェクトを持っており、現在 TFS から Git に移行しています。TFS では、RedGate の SQL ソース コントロールを使用して DB を最新の状態に保ちました。これは、分岐が非常に難しいため、とにかく誰もがトランクから離れて開発していると仮定すると、適切な方法でした。 DB スキーマ。

Git を使用するようになったので、db の変更を機能ブランチの一部にしたいと思います。Git ではブランチからブランチへのジャンプが非常に簡単であるため、開発者はデータベースの変更を含む機能からそれらの変更のない機能にジャンプする可能性があると思います。コードはとてもうまく更新されますが、DB はどうでしょうか? RedGate の製品がそのようなフラッシュで上下の移行を処理できるとは思えません。それとも間違っていますか? そして、RedGate がこれらの上下の移行を処理できない場合、私のコードでそれを行う正しい方法は何ですか?

ところで、私は他の同様の質問を検索し、これを見つけましが、答えは機能ブランチに移行スクリプトを含めることです。「アップ」移行についてはこれで十分ですが、たとえば、あるブランチで機能を作成している場合、別のブランチに切り替えて他の誰かのプル リクエストのコード レビューを行います。私のブランチのローカルデータベースは、何らかの形で元に戻す必要があります。しかし、どのように?

更新: RedGate は、この記事を紹介して、サポート コールに応答しました。基本的に、ブランチを切り替えたい場合は、データベースをソース管理からリンク解除/再リンクする必要があります。また、ブランチを作成またはマージすることはできません。要するに、うーん。より良い提案はありますか?

4

2 に答える 2

1

私がこれまでに見つけた最良の解決策は、RedGate - 彼らのMigrations V2 Betaから来ています。各ブランチでコミットを行うことができます。ブランチを切り替えるときに、[DB] タブで [最新のものを取得] して、ローカル DB をそのブランチに適用可能な db スキーマに更新します。

80% のケースで問題なく動作しますが、(まだ) 完璧な解決策ではありません

  • 移行前にブランチを以前のバージョンのスキーマに切り替えた場合、「ダウン」スクリプトを実行する方法はありません。
  • FILESTREAM を有効にすると、システムに少しバグが発生します。私はこれを彼らの技術サポートに報告し、彼らはバグを認めたので、うまくいけば、これはすぐに解決されるでしょう.

基本的に、「ベータ」と呼ばれるのには理由があります。

とにかく、今のところこれを解決策としてマークしていますが、誰かがより良いアイデアを思いついたら、聞いてみましょう.

于 2015-05-07T07:09:24.873 に答える