1

NHibernate を使用して大規模なアプリケーションを作成していて、2 つの別個のスキーマが必要であると想像してください (ちなみに Sql Server を使用しています)。

  1. Application_System (システム、構成テーブル、ユーザー テーブルなどに関連するすべてのテーブル)
  2. Application_Data (ユーザーがシステムと対話するときに保存/取得されるすべての実際のデータ)

今、私はNHibernateでこれを行うための簡単でクリーンな方法を見つけようとしてきました.CatalogとSchemaのプロパティを使用して解決策を見つけたと思いました.

Catalog("Application_System");
Schema("dbo");
Table("SystemSettings")

のSQLを生成しApplication_System.dbo.SystemSettingsます。そして、これはちょっと機能しますが、2 つのカタログが定義されている場合、hbm2ddl.auto のテーブルの作成/削除機能が機能しなくなります。これで、Catalog プロパティと Schema プロパティを意図しない目的で悪用している可能性が高いという結論に達しました。ただし、複雑な足場を必要とせずに同じことを達成する簡単な方法を見つけることができないようです。

どんな助けでも大歓迎です。NHibernate がこれをすぐにサポートしないとは信じられません。つまり、これはかなり基本的な要件です。

4

2 に答える 2

0

わかりました、かなり満足できる中途半端な家を見つけました。ChangeDatabase(string databaseName)ISession には、セッションが指しているデータベースを変更できるメソッドを公開する Connection プロパティがあります。

私のスキーマ エクスポートは、最終的にはどのオブジェクトがどのデータベースのものであるかがわからないため、構成で定義されたデータベースにすべてを保存しようとするため、まだ壊れています。

あなたはいくつかを獲得し、いくつかを失います。

于 2012-07-05T09:26:33.160 に答える
0

SchemaExport はスキーマ/カタログ ootb の作成をサポートしていませんが、xml、FluentNHibernate、または MappingByCode の補助オブジェクトを使用して、自分で作成スキーマ/カタログ ddl を追加できます。補助オブジェクトを最初に追加する必要があることに注意してください。

于 2012-07-04T18:56:02.657 に答える