nhibernateを使用して、挿入されたオブジェクトにプライマリキーを割り当てることを許可するにはどうすればよいですか?ジェネレータを型 "ID"として設定したいと思うが、ドキュメントにはこの "..resquire [s]を使用して2つのSQLクエリが新しいオブジェクトを挿入する"と書かれているようだ。それはなぜでしょうか?この機能を通常のINSERT SQL文のようにする方法はありますか?データベースでnhibernateのプライマリキーを選択させる
1
A
答えて
2
2つのクエリが必要な理由は、IDを使用すると、列が挿入されるまで列の値が定義されないためです。したがって、挿入後の選択には、挿入されたオブジェクトの列値を取得する必要があります。これはかなり標準的なもので、私は主キーとして自動生成されたキーを使用することを止めさせません。もう1つのオプションは、キーをデータベースに永続化する前に、新しいオブジェクトのGUIDを事前に生成することです。ほとんどの場合、自動生成されたキーが衝突するかもしれない別々のデータベースからデータをマージする必要があるなど、他の緩和的な状況が存在しない限り、私は実際にこれに利点がありません。
2
明らかな利点があります:NHibernateにidジェネレータとしてGuidsまたはHiloを使用させることで、NHibernate:バッチングで非常にクールな機能が有効になります。バッチ処理を使用するようにHibernateを設定するだけです(1000文ほど)、あなたの挿入物は突然非常に高速になります。
Fabioは、さまざまな利用可能なジェネレータについての投稿を持っていますhere - NHibernateを使用している場合(またはNHibernateがひどく動作すると思う人を知っている場合)は非常に便利です。
関連する問題
- 1. Cassandra Vs Dynamoデータベースのプライマリキーの選択
- 2. プライマリキーの選択
- 3. プライマリキーの選択方法は?
- 4. nhibernateクエリオーバーで式を選択
- 5. SQLServerプライマリキーの種類を選択する
- 6. プライマリキーselectチェックリストから選択
- 7. プライマリキーなしで子をフェッチするNHibernate
- 8. トップ1を選択nhibernate oracle
- 9. NHibernate Criteria Query - Distinctを選択
- 10. NHibernate 3.1.0:1サブクエリを選択
- 11. NHibernateの選択N + 1
- 12. Fluent nHibernateコレクションの選択ロード
- 13. laravelサブクエリの選択、複合プライマリキーのテーブル
- 14. メッセージ:データベースを選択できません
- 15. 流暢NHibernate選択n + 1
- 16. phpMyadminデータベースのインポートエラー#1046 - データベースが選択されていません
- 17. Fluent-NHibernateテーブルマッピング(プライマリキーなし)
- 18. NHibernateの基準:「最大(ID)を選択...」
- 19. SQliteデータベースで選択
- 20. MySQLiでPHPでデータベースが選択されていません
- 21. Mysqlの最大プライマリキーの自動インクリメントを選択するには?
- 22. 選択時のNHibernateのカウント平均
- 23. 選択された値を選択します。データベースからアイコンフラグ
- 24. g:grailsのデータベース選択保存選択
- 25. SQLiteデータベースでの選択Android
- 26. nhibernate queryoverエイリアス列の選択方法は?
- 27. PHPでデータベースが選択されていませんMySqli
- 28. プライマリキーのないNHibernate辞書マッピング
- 29. ウェブサイトのデータベース選択
- 30. テクノロジの選択、データベース