3

NHibernate を使用して大量のデータをデータベースに挿入しようとしていますが、非常に時間がかかります。私はそれについて読んだことがありますが、挿入後に SCOPE_IDENTITY をバッチ処理して呼び出す必要がないように、NH に行の ID を設定させるという提案がどこにでもありますが、これはレガシー データベースを使用するブラウンフィールド アプリなので、できます。 t NHibernate に行の ID を制御させます。

NH にスコープ ID を選択せず​​、行をデータベースに挿入するように指示する方法はありますか? 現時点では ID を知る必要はないので、挿入後に行が ID を認識しているかどうかはほとんど関係ありませんが、Nhibernate に ID を取得しないように指示することはできないと思います。この場合?

それが重要な場合は、Fluent NH を使用します。

前もって感謝します。

4

1 に答える 1

3

NH では、エンティティを識別するためにキャッシュ内のエンティティを管理する ID が必要です。なので、仕方が無いと思います。

パフォーマンスの問題は、必ずしも ID が原因であるとは限りません。セッションのフラッシュ回数が多すぎる可能性があります。自動フラッシュをオフにして確認するか、StatelessSession を使用してください。

ORM は大規模な操作にはあまり適していません。より低レベルのもの (SQL など) の使用を検討する必要があります。

于 2012-07-06T11:40:01.477 に答える