1

これは NHibernate 開発者の経験になじみがあるように見えるかどうか、またはこの問題を解決するためにどこから始めるべきかについて誰かが私にアイデアを与えることができるかどうか疑問に思っていました:

ASP.NET 1.1 で記述された NHibernate サイトを継承し、NHibernate 0.6 と .NET リモート処理を使用して、データベース サーバーにある DAL レイヤーにアクセスしました。ASP.NET 3.5 および NHibernate 1.2.1.4 にアップグレードしようとしています。

.NET リモート処理セットアップを直接データベース接続に置き換えたところ、サイトに何らかの負荷がかかるまですべて正常に動作し、NHibernate 呼び出しが断続的に例外をスローして失敗し始めました。

エラーとともに表示されるスタック トレースは次のとおりです。

NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, Type optionalEntityName, Object optionalIdentifier, IEntityPersister persister)
   at NHibernate.Loader.Entity.AbstractEntityLoader.Load(ISessionImplementor session, Object id, Object optionalObject, Object optionalId)
   at NHibernate.Loader.Entity.AbstractEntityLoader.Load(Object id, Object optionalObject, ISessionImplementor session)
   at NHibernate.Persister.Entity.AbstractEntityPersister.Load(Object id, Object optionalObject, LockMode lockMode, ISessionImplementor session)
   at NHibernate.Impl.SessionImpl.DoLoad(Type theClass, Object id, Object optionalObject, LockMode lockMode, Boolean checkDeleted)
   at NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation)
   at NHibernate.Impl.SessionImpl.Load(Type clazz, Object id)
4

2 に答える 2

2

問題はスレッドセーフでない nhibernate セッション ファクトリでした。リクエストごとに 1 つの nhibernate セッションを使用するために http モジュールを使用するようにプロジェクトを変更し (.as*x ファイル以外のリクエストに対してセッションを開かないようにしました)、すべて問題ありません。

于 2008-10-10T13:30:09.800 に答える
1
  • 接続設定を確認してください。
  • 可能であれば、サーバーへの影響を避けるために、できるだけ多くのオブジェクトをキャッシュしてください
  • テーブルにインデックスが付けられていることを確認してください...それは巨大なものです
  • ログに百科事典を書き込んでいないように、log4netのログが警告/エラーになっていることを確認してください
于 2008-10-09T16:19:29.893 に答える