Entity Framework Code Firstは、データベースが存在しない場合はデータベースを構築し、マッピングオブジェクトに基づいてデータベースを構造化します。Roundhouseは、NHibernateを使用したFluentMappingファイルでも同じことを行うと思います。
すべてのSQLDDLの作成と実行を処理する他のORM(またはRoundhouseのようなツール)はありますか?
Entity Framework Code Firstは、データベースが存在しない場合はデータベースを構築し、マッピングオブジェクトに基づいてデータベースを構造化します。Roundhouseは、NHibernateを使用したFluentMappingファイルでも同じことを行うと思います。
すべてのSQLDDLの作成と実行を処理する他のORM(またはRoundhouseのようなツール)はありますか?
NHibernateは、データベーススキーマを生成するためにFluentMappingsを必要としません。この機能はNHibernateコアに組み込まれています。
new SchemaExport(_configuration).Execute(false, true, false);
ただし、私の経験では、これはメモリ内統合テストまたは初期ロールアウトに主に役立ちます。本番データベースをアップグレードする必要があります。固執する場合は、データに影響を与えることなく、列、テーブル、および外部キーを追加および削除する必要があります。それには継続性とバージョン管理の側面があります。NHibernateは現在のマッピングのみを知っています。たとえば、2か月前に顧客の名前と名前を「CustomerName」という列に保存し、これを「FirstName」と「LastName」の2つの列に分割することにしたことはわかりません(これはおそらく最も原始的な変更です。作ることができます)。NHibernateの仕事は、数年前のデータモデリングの選択を覚えておくのではなく、現在のスキーマをオブジェクトにマップすることです。
私の経験では、アップグレードスクリプトを作成する魔法のツールはありません。手動で作成するか、少なくとも開発者がレビューする必要があります。ツールは、 RoundhouseEのように、これらのスクリプトを実行するためのフレームワークを提供できます。スコット・アレンは、「フォワードオンリー、ランワンス」アプローチに関する優れた シリーズを持っています。
設定ファイルでまたはまたはに設定hbm2ddl.auto
すると、休止状態になります。つまり、Java を使用すると、nHibernate でも同じであると想定します。create
create-drop
update
ORM が ddl を実行しない場合、それを使用してもあまり意味がありません。少なくとも重要な機能です。私見では。