2012-02-16 14 views
3

データレイヤーを開発していて、「コードファースト」の原則に従っているとします。データベースは、SchemaExportを使用してモデルから生成されます。 私はシナリオを生成する次のアイデンティティを実装する:NHibernateスキーマのエクスポートでOracleトリガーを生成するには?

  • 各テーブルは、独自の配列を有し、
  • トリガをトリガが「行ごと」タイプであり、データがテーブルに挿入されたときに、次のシーケンス値を挿入します。

このアプローチは

Id(x=>x.Id).GeneratedBy.TriggerIdentity(); 

を(流暢で)を使用して、NHibernateのでサポートされている。しかし、私はやるときSchemaExportのは、どちらの順序を提出し、またトリガが生成されます。 トリガーと対応するシーケンスを作成するためのDDLコードを発行するようにNHibernateに指示する方法?

答えて

2

NHに対して、あなたが作成する追加オブジェクトを明示的に伝える必要があります。 私が知っている限り、流暢なNHでは補助データベースオブジェクトを直接設定することはできません。

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
<database-object> 
    <create> 
     create ... 
    </create> 
    <drop> 
     drop ... 
    </drop> 
</database-object> 
</hibernate-mapping> 

そして、埋め込まれたリソースとしてプロジェクト.hbm.xmlファイルに追加することが

.Mappings(m => 
{ 
    m.HbmMappings.AddFromAssemblyOf<...>(); 
     ... 
}) 

はSchemaExportが実行されます選択する流暢なNHを伝えるあなたの作成し、スキーマをエクスポートするときのセクションをドロップします。

関連する問題