http://fabiomaulo.blogspot.com/2008/12/identity-never-ending-storyで説明されているように、トランザクションが実際にコミットされる前に挿入が必要なため、ID ジェネレーターが作業単位を壊すことを理解し、受け入れます。 html . 私は、代替案と、それらがより優れている理由を認識しています(目前の問題と一般的に関連して)。
私が持っている質問は、実装がそのまま存在する理由と、これらの問題が EF に影響を与えるかどうかです (純粋な好奇心)。私が見た唯一の本当の正当化 i: 「セッション内のすべてのエンティティ (「永続エンティティ」と呼ばれる) を識別する必要があるため、NHibernate には ID が必要です。通常、ID は、レコードがデータベースに既に存在するかどうかを判断するためにも使用されます。 (保存されていない値)。」
しかし、なぜすぐに値を持たなければならないのでしょうか? コミットが発生するまで INSERT を延期できないのはなぜですか?
あまり重要でない質問: EF は同じ問題に悩まされていますか? ISession が適切な UoW 実装であることは知っています。EF は UoW パターンを実装していませんか、それともこの問題を処理する別の方法がありますか? もしそうなら、それは何ですか?