多くの子レコードを持つ親レコードを持つレコード構造があります。同じページに、すべての子を取得するためのクエリがいくつかあります。
後でクエリを展開すると、「プロキシ」と表示されるレコード セットが取得されます。すべてが通常そこにあるため、レコードからデータを取得するのに問題ありません。私が抱えている唯一の問題は、レコード「ID」を取得しようとすると、プロキシであるため常に「0」になることです。これにより、レコード ID を「選択した値」として使用するドロップダウン リストを作成するときに、かなり困難になります。これをさらに悪化させるのは、ランダムであることです。したがって、5 つの項目のリストのうち、2 つの項目はプロキシであるため ID が「0」になります。
evict を使用して、時々強制的にロードすることができます。ただし、遅延ロードが必要な場合 (グリッドの場合) は、遅延ロードが強制終了され、その場でグリッドの内容を表示できないため、エビクトは良くありません。
セッションを開始するために以下を使用しています。
ISession session = FluentSessionManager.SessionFactory.OpenSession();
session.BeginTransaction();
CurrentSessionContext.Bind(session);
クエリ内で ".SetFetchMode("MyTable", Eager)" を使用しても、まだ "Proxy" と表示されます。
プロキシは問題ありませんが、レコード ID が必要です。他の誰かがこれに遭遇し、簡単な修正をしていますか?
これについて何か助けていただければ幸いです。
ありがとう。
リクエストごとに、「プロキシ」として表示されているため、Patients.Children の ID が「0」になるクエリを実行しています。
public IList<Patients> GetAllPatients()
{
return FluentSessionManager.GetSession()
.CreateCriteria<Patients>()
.Add(Expression.Eq("IsDeleted", false))
.SetFetchMode("Children", Eager)
.List<Patients>();
}