nHibernateを実際に実行せずに挿入/更新操作用の生のSQL文を生成することは可能ですか?もちろん、すべて(マッピング、connectionStringsなど)が正しく構成されているとしますか?実行せずにInsert/Update用のnHibernate raw sqlを生成するには?
私が見つけた最も近いものを呼び出すことです:
INSERT INTO Client (FirstName, LastName) values (?, ?)
しかし、それはまだ私が必要になります。このようになりますSQLIdentityInsertStringを含む型SingleTableEntityPersisterのオブジェクトを返し
Session.SessionFactory.GetClassMetadata(typeof(Client))
すべてのプロパティを手動でバインドし、その上にというプロパティがSQLIdentityInsertStringです。それを行うための適切な方法はありますか?
なぜこれをやりたいですか? – mjwills
XMLファイルから多数のクライアントをデータベースにインポートする必要があります。実行する必要がある複数のクエリがありますが、挿入/更新操作のための生のSQLがある場合は、1つのクエリで処理できます。私はすでにハードコードされたSQLクエリでそれをテストしましたが、それはもちろん(それはかなりのスピードアップを提供したにもかかわらず)非常にmaintainableではありません。私は実行時に、手動で行うのではなく、既存のnHibernate設定とマッピングを使用してコードを生成したいと思います。 –
私は、インターセプタインターフェイスまたはベースクラスのいずれかに、使用するSQL文字列を与えるメソッドがあると思います: 'OnPrepareStatement()'。これを利用することができますが、まず作業をシミュレートしてからトランザクションをロールバックする必要があると思います。 –