2012-03-28 18 views
1

NHibernate SchemaExportを使用してSQLiteデータベースを作成しています。私はデータベースに更新、削除、挿入トリガを追加する必要があります。これはNHibernateで可能ですか、手動でトリガを作成するためにSQLスクリプトを実行する必要がありますか?NHibernateを介したSQLiteトリガーの作成

答えて

0

いくつかの調査の後、セッション接続を取得することが可能であることを認識し、そこから任意のDDLコマンドを実行できます。私の場合、それは次のようになります。

 var commandText = new StringBuilder(); 
     var command = session.Connection.CreateCommand(); 
     commandText.AppendLine("CREATE TRIGGER books_insert_trg AFTER INSERT ON books "); 
     commandText.AppendLine("BEGIN"); 
     commandText.AppendLine("UPDATE books SET sort=title_sort(NEW.title),uuid=uuid4() WHERE id=NEW.id;"); 
     commandText.AppendLine("END"); 
     command.CommandText = commandText.ToString(); 
     command.ExecuteNonQuery(); 
2

あなたはコードでマッピングのためにAuxiliary Database Objects

を使用する必要がある、あなたは、マッパーからコンパイルHbmMappingに直接追加する必要があります。

mappingDocument.databaseobject = 
    new[] 
    { 
     new HbmDatabaseObject 
     { 
      Items = new object[] 
      { 
       new HbmCreate { Text = new[] { "CREATE TRIGGER ..." } }, 
       new HbmDrop { Text = new[] { "DROP TRIGGER ..." } } } 
      } 
    }; 
+0

はい、それはより良い解決策であると思われますが、トリガーの作成をマッピングと一緒に置くことです。しかし、私は問題があります。私はコード(NHibernateの流暢ではない)によるマッピングでNHibernate 3.2を使用しています。私はこのようにする方法を理解することができません。何らかのサンプルコードで、XMLマッピングなしでこれをどうやって行うのですか? – zszep

関連する問題