オブジェクトの状態をINSERTクエリを使用して追加すると、オブジェクトの状態はどうなりますか?そして、どのように私はこのオブジェクトを同じセッションを得ることができますか?私は取得のためにこれを使用して、自分のIDがわかっているネイティブSQLCreateSQLQueryを使用してNHibernateでINSERTクエリを使用する
session.CreateSQLQuery("INSERT INTO table (...) VALUES (...)").ExecuteUpdate())
を使用して
オブジェクトの挿入:セッションが同じであるため、
sessison.Get<MyObjectType>(id)
が、オブジェクトがnullで、コミットはまだ保留されています。 私は何が間違っていますか?
P.S.私の子オブジェクトfooは親バーに基づいて作成されているので、barとfooは同じIDを持ち、コンクリートクラスを使用しているため、
これは私にとっては正常ではありません。生のSQLレベルでは、保留中のデータを持つトランザクションを読み込んでいる場合、コミットされていないデータを任意の分離レベルで読み取ることができます。 'ExecuteUpdate'をチェックすると、すぐにクエリをdbに送ることになっています。あなたのケースではプロファイラーでそれをチェックしてもよろしいですか?あなたのセッションで同じIdを持つ失効したエンティティを持つのと同じように、あなたが新しいエンティティを見つけることができるはずです。 NHibernateのデバッグlog4netログを有効にし、 'DefaultLoadEventListener'からのログはあなたに詳細を与えるでしょう。 –
いいえ、ExecuteUpdateの後、プロファイラはi 'を挿入しますがコミットは送信しません。私はそれがISessionProviderのライフスタイルに依存していると思う –
ちょうど挿入を送ることは私がプロファイラで見たいと思っていたものでした。とにかく、あなたのコメントは、あなたが何かを見つけたことを伝えていますが、おそらくそれを自分自身の答えとして追加する必要があります(ここでは/ questions/36386613/using-createsqlquery-with-nhibernate?noredirect = 1#comment60434278_36388601)質問し、それを受け入れる。あるいは、なぜあなたの変更によってコードが動作するのかわからない場合は、新しい質問をするべきでしょうか。 –