2011-07-27 9 views
0

現在、OracleおよびSQL Serverデータベースをサポートするアプリケーションがあります。私たちは別のORMからNHibernateに移行する過程にあります。 (Oracleの場合)NHibernate IDの生成の再マッピング

当社のIDマッピングは、このように見える終わる:

<id name="Id" column="FoozId"> 
    <generator class="native"> 
    <param name="sequence">Fooz_SEQ</param> 
    </generator> 
</id> 

これは、単一のデータベース全体のシーケンスを使用していますので、私たちは単に「ネイティブ」を使用することはできません、と私たちは、エンティティタイプごとに1つ必要です。

hereについて説明したリマッパーのアイデアを使用しようとしていますが、30文字を超えるテーブル名をトリミングするなどの作業には十分に機能しているようです。しかし、配列のパラメタをマップから継承していきます。 SQL Server用のネイティブジェネレータクラスを使用したいが、シーケンス名は省略したい。

これは実行可能になるか、または2組のマッピングを生成する必要がありますか?

これは、我々が設定したテストプロジェクトで動作しているようです

答えて

1

:それはそれを行うための最善の方法だが、それはOracleとSQL Serverデータベースに対して渡すいくつかの簡単な統合テストを持っていない場合

if (classMap.Identifier.IsSimpleValue) { 
    var simpleVal = classMap.Identifier as SimpleValue; 
    simpleVal.IdentifierGeneratorProperties.Remove("sequence"); 
} 

わかりませんマッピング。

関連する問題