2009-10-22 9 views
15

私は、NHibernateと比較的頻繁に変化するスキーマに関するワークフローを洗練し、これに対処する方法を探しています。同じソリューションを本番システムに適用したいと思っています。スキーマアップデートだけではなく、nhibernate +マイグレーションワークフロー

私が知りたいのは、可能な限りワークフローを洗練して、自分のドメインモデルと同期してデータベースを取得できるようにすることです。スクリプトのタランティーノのアプローチは素晴らしですが、nHibernateのマッピングから更新スクリプトを生成する方法がないようですので、スクリプトを作成する手作業やredgate sqlのようなツールを使用することになります。スクリプトの作成段階で人生を楽にしてくれるものがありますか?

おかげで、 クリス

答えて

1

は、私は自分自身をこれらmigration tools for .netのいずれかを使用していないが、数年前に私の暇な時にはRuby on Railsを試したとき、私はT-SQLに比べマイグレーションのメリットを見て当時私が自分の仕事で使ったスクリプト。

+0

ご意見ありがとうございましたが、私の質問は、どのツールが利用可能であるのではなく、ワークフローを最適化しているかのようです。 – Chris

1

私が行った最近のプロジェクトでは、VCS分岐とNHibernateを組み合わせることで、複数の頭痛や欠点が発生する可能性があることがわかりました。

私たちが行ったことは、いくつかのデータ読み込みと一緒に各自動ビルド(開発環境用)でスキーマを生成するようにNHibernateを設定することでした。

本番環境では、現在のスキーマと目的のスキーマに基づいて、必要なフィールドと変更を含む1つの移行が生成されました。

+1

このデベロッパー・プロダクション・スクリプトの生成を自動化しましたか? –

0

SQL Compareを使用します。それは支払われますが、投資imhoの価値があります。生成されたスクリプトのそれぞれを整理した状態で保存しておくと、リリースされたバージョンのデータベースを作成するのに適しています。

これは、我々は二つのデータベース "プロジェクト名" と "ProjectName_TEST" を持っているDEV中にいつもの流れ

  1. です。
  2. スキーマの変更ごとに、新しいデータベースを生成し(NHibernate)、 "ProjectName_TEST"を置き換えます。
  3. "ProjectName"を更新する(したがってすべての開発者データを保持する)
  4. "ProjectName_TEST"を本番データベースと比較し、更新スクリプトを生成します。

VSビルドイベントを使用してプロセスを自動化するのに非常に便利なので、command line optionsをご覧ください。