問題タブ [isession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
122 参照

nhibernate - NHibernateのISessionについて

この質問では、ユーザーはエラーが発生していたため、セッションを閉じるためのより良い方法を尋ねます

最も投票された答えは、次のようなAyendeの答えです。

常にsession.Dispose();を使用する必要があります。もう1つは非常に奇妙な出来事のためのものです

私は本当にいつも電話するべきsession.Dispose()ですか?電話するだけでは不十分session.Close()ですか?

0 投票する
1 に答える
871 参照

nhibernate - SessionScope は ISession とまったく同じですか?

Castle ActiveRecord の SessionScope は NHibernate の ISession とまったく同じですか? はいの場合、Castle ActiveRecord が重複した機能を提供したのはなぜですか? いいえの場合、それらの違いは何ですか?

0 投票する
1 に答える
620 参照

nhibernate - ActiveRecordMediator 内で、Execute または CreateSession を使用する必要がありますか?

NHibernate のISession. たとえば、 を介して Sql クエリをISQLQuery実行するか、 を介して LINQ-to-NHibernate を実行しsession.Linq<MyType>()ます。アクセスするには2つの方法があることを知っていますISession

  1. ActiveRecordMediator.GetSessionFactoryHolder().CreateSession()
  2. ActiveRecordMediator.Execute()

それぞれの長所と短所は何ですか?さらに、別の代替方法はありますか?

0 投票する
1 に答える
555 参照

asp.net-mvc - IsessionFactoryの問題

この行で、従来の「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生します

私のconfigure.csファイルは次のとおりです

webconfigに接続文字列があります

VS2008内でビルドされたappcodeフォルダー内のProducts.mdfを使用

なぜ私がこの問題を抱えているのか、何か考えはありますか?

0 投票する
2 に答える
400 参照

.net - NHibernate で追加操作をキューに入れる方法は?

Linq to SQL や Entity Framework と同じように、NHibernate で「追加」操作をキューに入れる方法はありますか?

エンティティをリポジトリに追加したいのですが、ビジネス ロジックが複雑であるため、すぐにデータベースに保存したくありません。Entity Framework と同じように、ITransaction.Commit() を呼び出すときにすべての変更を送信したいと考えています。それをしてもいいですか?

注: ISession.Save() メソッドを呼び出すとすぐに NHibernate が挿入コマンドを実行することがわかりましたが、これは想定外です。

更新: FlushMode を Commit に設定してみます。ただし、ITransaction.Commit() を呼び出したときにすべての変更をコミットするのではなく、エンティティをすぐに保存します。

更新 2ここで理由を見つけましたhttp://nhibernate.info/doc/nh/en/index.html#manipulatingdata-flushing : (例外は、ネイティブ ID 生成を使用するオブジェクトが保存時に挿入されることです)。IDジェネレーターを「ID」以外のものにしか変更できませんか?EntityFramework のソリューションに似たソリューションは他にありませんか?

0 投票する
1 に答える
1365 参照

.net - WebSessionContext/CurrentSessionContext を使用した ISession の遅延初期化

NHibernate 3 で新しいプロジェクトを開始しており、WebSessionContext で CurrentSessionContext API を使用して ISession オブジェクトを管理しようとしています。

以前のプロジェクトでは、私は常にそれを自分で管理していたので、ISession オブジェクトが必要になるたびに、それを作成して HttpContext.Items コレクションに格納していました。非常に簡単ですが、この新しいプロジェクトにはネイティブ ソリューション (CurrentSessionContext) を使用するのが最適なオプションのようです。

オブジェクトを管理したときに、遅延初期化を行うことができました。つまり、すべてのリクエストではなく、必要なときにのみセッションを開くことができました。これは、必要ない可能性があり、すべてを開くことでリソース/時間を浪費するためです。時間。

CurrentSessionContext API でそれを行う簡単な方法はありますか?

これを担当する HttpModule で使用しているコードは次のとおりです。


編集

Diego はほぼ完璧にやり遂げましたが、私はこれについてもう少し考え、私がそのコントロールを自分で実装した主な理由を思い出しました: トランザクションです。

私はオニオン アーキテクチャの専門家なので、ドメイン オブジェクト (いつトランザクションを開始するかを知っているオブジェクト) はインフラストラクチャにアクセスできないため、トランザクションを開始できません。

これを解決するために、遅延初期化を使用し、セッションを開くときに常にトランザクションを開始します。コミットは、リクエストが終了し、例外がキャッチされなかったときに発生します。これに加えて、クエリを実行する場合でも、常にトランザクションを使用するという Ayende のアドバイスがあります。何かご意見は?

0 投票する
4 に答える
900 参照

nhibernate - NHibernate が同じオブジェクトを複数回ロードしています - 助けてください!

ASP.NET ページの 1 つのトレースを読んでいて、ユーザーが必要になるたびにページ ユーザーがデータベースから読み込まれていることに気付きました。それぞれISessionがオブジェクトをキャッシュすることになっているので、私はこれについて本当に当惑しています。

論理的には、問題は次の 2 つのいずれかである必要があります。

  1. ISessionキャッシュが正しく機能していません
  2. ユーザーがリクエストされるたびに、別のISession

問題は2番だと思います)。私は Castle Windsor を使用してオブジェクトのライフサイクルを管理しているので、誰かが問題を見つけるのを手伝ってくれる場合に備えて、使用しているコードの一部を投稿しました。Castle Windsor が管理しているクラスは次のとおりです。

  1. MooseUserRepository- MooseUser インスタンス (つまり、この場合はページ ユーザー) を管理するためのリポジトリ クラス
  2. KctcUnitOfWork- ISession のラッパー

MooseUserRepositoryKctcUnitOfWork次のようなコンストラクタ依存関係があります。

構成ファイルは次のようになります。

PerWebRequestライフスタイルに注意してください。

Castle Windsor コンテナは、呼び出される一種のユーティリティ クラスの単なる静的プロパティであるMoose.Applicationため、常に存在します。

ページ自体には、次のような IMooseUserRepository インスタンスがあります。

ページのユーザーは、次のようなプロパティによってアクセスされます。

これらの後続の呼び出しPageUserにより、重複した SQL コマンドが発生しているようです。

明らかに、ロードされたオブジェクトをプライベート変数に保存することでこの問題を回避できMooseUserますが、私の理解では、ISessionこれは私のために行うはずです。

何がうまくいかないのか、誰でも推測できますか?

0 投票する
1 に答える
1645 参照

nhibernate - EF4ObjectContextとNHibernateセッション

EF4に飛び込んだ後、NHibernateを学ぼうとしています。EF4 ObjectContext(またはDbContext)と同等のNHibernateセッションですか?

具体的には、EF4では、ObjectContext(またはDbContext)から派生し、クラスには各エンティティの明示的なObjectSetが含まれています(例:

これまで見てきたNHibの例では、Sessionオブジェクトはこのように使用されていません。私は何かが足りないのですか?

0 投票する
1 に答える
1819 参照

nhibernate - NHibernate ISession.Persist() のドキュメントはどこにありますか?

NHibernate の ISession は、2 つのオーバーロードを持つメソッド Persist() を公開します。この方法に関するドキュメントはどこにも見つかりません。http://nhibernate.info/doc/nh/en/index.htmlのNHibernateの参考資料にも言及されていません。

このメソッドは非推奨ですか、それとも廃止されますか? いつ使用することになっていますか?SaveOrUpdate() と比べてどうですか?

どんなポインタでも大歓迎です。

0 投票する
2 に答える
262 参照

nhibernate - ActiveRecordBase.FindAll() は一次キャッシュを許可しませんか?

NHibernate の 1 次キャッシュは、同じセッションを使用する場合に使用できます。ActiveRecordBase.FindAll()毎回新しい を作成しISessionます。したがって、次のような場合は、一次キャッシュから利益を得ることができません。

解決策はありますか?