1

Entity Framework Code Firstは、データベースが存在しない場合はデータベースを構築し、マッピングオブジェクトに基づいてデータベースを構造化します。Roundhouseは、NHibernateを使用したFluentMappingファイルでも同じことを行うと思います。

すべてのSQLDDLの作成と実行を処理する他のORM(またはRoundhouseのようなツール)はありますか?

4

2 に答える 2

3

NHibernateは、データベーススキーマを生成するためにFluentMappingsを必要としません。この機能はNHibernateコアに組み込まれています。

new SchemaExport(_configuration).Execute(false, true, false);

ただし、私の経験では、これはメモリ内統合テストまたは初期ロールアウトに主に役立ちます。本番データベースをアップグレードする必要があります。固執する場合は、データに影響を与えることなく、列、テーブル、および外部キーを追加および削除する必要があります。それには継続性とバージョン管理の側面があります。NHibernateは現在のマッピングのみを知っています。たとえば、2か月前に顧客の名前と名前を「CustomerName」という列に保存し、これを「FirstName」と「LastName」の2つの列に分割することにしたことはわかりません(これはおそらく最も原始的な変更です。作ることができます)。NHibernateの仕事は、数年前のデータモデリングの選択を覚えておくのではなく、現在のスキーマをオブジェクトにマップすることです。

私の経験では、アップグレードスクリプトを作成する魔法のツールはありません。手動で作成するか、少なくとも開発者がレビューする必要があります。ツールは、 RoundhouseEのように、これらのスクリプトを実行するためのフレームワークを提供できます。スコット・アレンは、「フォワードオンリー、ランワンス」アプローチに関する優れた シリーズを持っています。

于 2011-08-21T18:30:54.560 に答える
0

設定ファイルでまたはまたはに設定hbm2ddl.autoすると、休止状態になります。つまり、Java を使用すると、nHibernate でも同じであると想定します。createcreate-dropupdate

ORM が ddl を実行しない場合、それを使用してもあまり意味がありません。少なくとも重要な機能です。私見では。

于 2011-08-19T15:43:00.817 に答える