0

ASP.NET MVC アプリケーションのデータ アクセス層として NHibernate を使用しています。また、構造マップを IoC コンテナーとして使用しています。セッション ファクトリをシングルトンとして作成し、リクエストごとにセッションを作成するように Structre マップを構成しました (InstanceScope.Hybrid)。基本的な CRUD 操作は問題なく実行できます。

現在、バックグラウンド プロセスが 30 秒ごとに実行されており、いくつかのリポジトリ (セッションを使用) を使用しています。そして、このバックグラウンド プロセスは、何らかの理由で新しいデータを取得できません。多分私は簡単なことを見逃しています。私はグーグルを試しましたが、有用なものを見つけることができませんでした. 誰かが私を正しい方向に向けてくれたら、本当に助かります。

編集:

2 番目のレベルのキャッシュが有効になっているかどうかわかりません。NHibernate の初心者です。休止状態の構成ファイルを以下に貼り付けます。

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
    <property name="connection.connection_string">Data Source=.\SQLEXPRESS;Initial Catalog=Map.db;Integrated Security=True</property>
    <property name="show_sql">true</property>
    <mapping assembly="Infrastructure"/>
  </session-factory>
</hibernate-configuration>

私が知りたい主なことは、NHibernate を使用した典型的な Web アプリケーションで既に使用されている設計/設計パターンがあるかどうかです。また、データベース設定が別のアプリから更新された場合、ステートレス セッションを使用すると問題が解決しますか?

4

3 に答える 3

1

2 次キャッシュを有効にしても、NHibernate を経由せずにデータベースを更新するバックグラウンド プロセスがある場合、これらの変更は反映されません。このシナリオでは、2 次キャッシュの使用は適切ではありません。

于 2009-06-29T14:38:05.980 に答える
0

この目的のためだけに別のコンソール アプリケーションを作成することで、この問題を解決しました。エレガントなソリューションではありませんでしたが、それでも機能しました。ご回答ありがとうございます。

于 2009-07-12T08:16:25.687 に答える
0

バックグループ アプリケーションで取得を開始する前に、毎回 (30 秒) 新しいセッションを使用しますか?

hibernate config で show_sql を有効にするか、hiberante プロファイラーまたは sql プロファイラーを使用して、毎回 (30 秒) SQL が起動されるかどうかを確認します。

あなたの説明であなたの問題を解決するのは難しいです。

于 2009-06-29T15:38:11.383 に答える