問題タブ [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 投票する
3 に答える
536 参照

nhibernate - NHibernate がコレクションを永続化しない

NHibernate で奇妙なエラーが発生しました。ISession がスレッド間で共有されているというエラーが発生していましたが、次のような独自の ADO.NET 接続を提供することでこれを解決しました。

私のアプリケーションは動作するようになりましたが、コレクションを持つすべてのオブジェクトは、コレクションなしでデータベースに永続化されています。たとえば、車にタイヤのリストがあるとします。次に、車を作成し、データベースに既に存在するタイヤに基づいてタイヤのリストを生成します。車のオブジェクトを保存すると、リストではなく車だけが保存されます!

私が間違っていることについて何か助けはありますか?私は NHibernate 2.0 を使用しており、Session.Flush() と Transaction.Commit() を呼び出しています。

乾杯。

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

nhibernate - NHibernateの第2レベルのキャッシュからオブジェクトを削除する

私は自分のアプリの1つでNHibernateの第2レベルのキャッシュを使用することを考え始めました。私はおそらくNHibernate.Caches.SysCache.SysCacheProviderASP.netキャッシュに依存するを使用します。

キャッシュを有効にすることは問題ではありませんでしたが、キャッシュを管理する方法、たとえば、キャッシュから特定のエンティティをプログラムで削除する方法などについて疑問に思っています。

私のアプリケーションはある種の画像データベースです。ユーザーはバックエンドを介して画像をアップロードし、アクセスしてフロントエンドで画像を表示できます/ImageDb/Show?userId=someUserId

データはあまり頻繁に変更されません。また、変更された場合、ユーザーは、このユーザーのキャッシュされたオブジェクトをキャッシュから削除するバックエンドの「キャッシュをクリア」という名前のボタンを気にする必要はありません。

nhibernatesの第2レベルのキャッシュからすべてのキャッシュされたオブジェクトを削除できるソリューションをオンラインで見つけました。しかし、それは私には少しブルートフォースです... 1人のユーザーが自分のデータのキャッシュをクリアしようとしたという理由だけで、数十人のユーザーのキャッシュ全体をクリアしたくありません。

だから私が基本的にやりたかったのは、C#のnhibernatesの第2レベルのキャッシュからキャッシュされたdbオブジェクトを選択的に削除することです。

これは可能ですか?キャッシュプロバイダーにもよると思います。これがASP.netキャッシュプロバイダーで実行できない場合、私は他の組み込み/オープンソースの提案を受け入れます。

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

asp.net - asp、net ISession ヘルプでの Nhibernate

nhibernate と asp.net MVC アプリケーションを使用しています。

httpModule を介して、Session per Request パターンを実装しています。

非常に単純に見えますが、NHibernate Profiler で実行すると、セッションが決して閉じられないことが明確に示されます。

パターンは簡単に見えます...しかし、セッションが閉じない理由がわかりません。

これが私が重要だと思うコードです。

イベント ハンドラを設定します。

ハンドラーでセッションを破棄します

誰かが私を正しい方向に向けることができますか? 私が見るべきものは、パターンが正しく実装されていないことですか?

私は困惑しています

ありがとう!

E-

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

asp.net - NhibernateセッションとASP.NET

NhibernateProfilerを使用して、すべてのhttpリクエストに対してISessionを作成していることを確認しました。ただし、ISessionは決して閉じません。localSession.Close()が発生するログを確認できます。設定ファイルに、セッションが閉じられない原因となるものがありますか?localSession.Close()がセッションを物理的に閉じない他の理由はありますか?NHibernateの2.1を使用しています。

これをお読みいただきありがとうございます。

0 投票する
3 に答える
1287 参照

asp.net-mvc - ASP.NET MVC アプリで NHibernate ISession を破棄する方法

asp.net mvc アプリに NHibernate を接続しました。

ISession を破棄しなければ、すべて正常に動作します。ただし、破棄する必要があることを読みましたが、破棄すると、「セッションが閉じられました」というランダムな例外が発生します。

Windsor を使用して、ISession を他のオブジェクトに注入しています。

これが私の現在のNHModuleです:

ISession の登録:

モジュールのアンバインドで Dispose を追加すると、エラーが発生します。セッションが閉じられているというエラーが発生し続けるので、これは正しい方法ではないと思いますが、正しい方法は何ですか?

ありがとう、ジョー

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

nhibernate - StructureMap によって HttpContextScoped である NHibernate ISession を取得する方法

私は MVC フレームワークにやや慣れていないので、次の投稿に従っています: NHibernate with StructureMapコントローラーで HttpContextScoped ISession を実際に取得する方法がわかりませんか?

これを行う簡単な方法があると確信していますが、確信が持てません。

また、これは小規模なプロジェクトであり、エンタープライズ デザイン パターンを使いすぎたくはありません。

ありがとう!

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

.net - サービス層: アプリケーションごとまたはビュー モデルごとに 1 つのインスタンス? (または: 各ビュー モデルに独自のデータ コンテキストを与える)

UI (ビュー/ビュー モデル)、サービス、データ アクセス/永続性の 3 つのレイヤーを使用して、C#/.Net 3.5 アプリを構築しています。

サービス レイヤー: 各サービス レイヤー インスタンスは、一意の永続化インスタンスに関連付けられています。サービス層は、インターフェイスを介して永続層を参照します。

永続層: 現在、永続層インターフェイスには、(Fluent) NHibernate を使用する単一の具体的な実装があります。すべての永続層インスタンスは、同じ ISessionFactory を共有します。各永続インスタンスは、そのファクトリを使用して独自の ISession を開きます。

目標: Ayende Rahienが提案したように、各ビュー モデルが独自のデータ コンテキスト (別名 ISession) で動作するようにします。これを実現するために、私のアプリは各 VM に独自のサービス レイヤー インスタンスを提供します (これには、永続レイヤーの独自のインスタンスがあります)。私には、同じサービス層クラスのインスタンスがこれほど多くあることは怪しいにおいがします。

質問: これは良いアプローチですか? VM ごとに 1 つのサービス インスタンスから離れて、アプリごとに 1 つのサービス インスタンスに移行したほうがよいでしょうか? もしそうなら、どのようにそれを行い、各 VM に独自のデータ コンテキストを与えますか?

ありがとう、
ベン

0 投票する
5 に答える
897 参照

nhibernate - ViewModelごとにISessionのインスタンスを作成します

これが私の問題です。次のツールを使用してデスクトップアプリケーションを構築しています。

  • カリバーン
  • 注入する
  • NHibernate

私のすべてのビューモデルとリポジトリはNinjectでインスタンス化されています。私のリポジトリはすべて、コンストラクターにISessionが必要です。

ViewModelsに関するayendeのアドバイスに従いたいと思います。各ViewModelは新しいセッションを開きます。

ViewModelの作成時に新しいセッションを開き、このビューモデルで使用されるリポジトリ内でこのセッションを使用するようにNinjectを構成することは可能ですか?

NinjectのInScope関数とNHibernateのICurrentSessionContextインターフェイスを調べましたが、それらすべてをモデル化して必要なものを取得する方法がわかりません...

誰かが以前にそのようなものを作ったことがありますか?

前もって感謝します

マイク

0 投票する
3 に答える
1679 参照

asp.net - 依存性注入を使用して、作業単位コンテナーをリポジトリーのコンストラクターに渡す方法

ASP.NETWebアプリケーションでリポジトリパターンの実装を完了する方法を見つけようとしています。

現在、ドメインクラスごとにリポジトリインターフェイスがあり、そのクラスのインスタンスを読み込んだり保存したりするためのメソッドを定義しています。

各リポジトリインターフェイスは、NHibernateを実行するクラスによって実装されます。Castle Windsorは、web.configに従って、クラスのDIをインターフェースに分類します。実装されたクラスの例を以下に示します。

前のスレッドで指摘したように、リポジトリクラスは、すべてのメソッドでインスタンス化するのではなく、作業単位コンテナ(つまり、ISession)を受け入れる必要があります。

作業単位コンテナは、必要に応じて(たとえば、プロパティで)各aspxページによって作成されると思います。

次に、Windsorが作成するときに、この作業単位のコンテナーインスタンスがStoredWillRepositoryのコンストラクターに渡されるように指定するにはどうすればよいですか?

それとも、このパターンは完全に間違っていますか?

アドバイスありがとうございます。

デビッド

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

nhibernate - リクエストごとのセッション (必要な場合のみ)

私はアプリケーション (asp.net mvc) を開発しており、リクエストごとに ISession を使用しています (globa.asax では、Begin_Request イベントと End_Request イベントで Bind と Unbind を使用しています)。すべて正常に動作しますが、場合によっては (一部の要求) ISession (データベースとの接続) を使用する必要はありません。

すべてのプロセス要求で ISession エントリを作成する必要がある場合にのみ ISession を開く方法があるかどうかを知りたいです (すべてのリポジトリとトランザクションの一意のコンテキストと共有するため)。

私はペニー オークションの Web サイトを開発しています。サーバーには 1 秒あたりのリクエストが多く、接続が必要ない場合もあります。キャッシュを使用します。

ありがとう

乾杯