Session.Save
とTransaction.Commit
の間に違いはありますか?NHibernate:Session.Save and Transaction.Commit
どちらを使用する必要がありますか?
Session.Save
はTransaction.Commit
と組み合わせて使用する必要があります。誰がこれがなぜそうだと言うことができますか?
Session.Save
とTransaction.Commit
の間に違いはありますか?NHibernate:Session.Save and Transaction.Commit
どちらを使用する必要がありますか?
Session.Save
はTransaction.Commit
と組み合わせて使用する必要があります。誰がこれがなぜそうだと言うことができますか?
これは差分です。Session.Save
はオブジェクトを保存し、Transaction.Commit
は複数の作業(複数の取得、読み込み、保存、更新など)を行います。
あなたは両方を使いたいでしょう。もっと読むためのリンクが付いた簡単な説明があります。 NHibernateのドキュメントには、次の言葉:ISession
で
、すべてのデータベース操作は、データベース操作(でも、読み取り専用の操作を)分離トランザクション 内部で発生します。
トランザクションを明示的に定義しないと、データベースに読み書きするたびに暗黙的にトランザクションが作成されます。あまり効率的ではありません。だから読んでいても、トランザクションの中にすべてを入れ、完了したらトランザクションをコミットしたいと思うでしょう。 Ayende Rahienはさらにthis blog postで説明します。
いくつかのコードサンプルを見ると、人々がトランザクションを使用していないように見えるかもしれませんが、あなたが見ているコードの外でトランザクションを開始/コミットしているだけかもしれません。私のASP.Net MVCアプリケーションでは、たとえば、私はコントローラーアクションの外でトランザクションを処理するためにアクションフィルター(TransactionAttribute)を使用します。
良い説明:TransactionAttributeの提案の+1 – Graviton
Transmission.CommitまたはTransaction.Commit? – twk