関連付けられた機器で非アクティブな患者の総数を取得しようとしています。以下は、値 4 を返します。4 つの機器で非アクティブな患者が 1 人いるため、値 1 を返す必要があります。
return FluentSessionManager.GetSession()
.CreateCriteria<Patients>()
.CreateAlias("Locations", "l")
.CreateAlias("l.Branches", "b")
.CreateAlias("PatientsEquipment", "pe")
.Add(Expression.Eq("b.ID", branchID))
.Add(Expression.Eq("CurrentStatus", Enumerations.PatientStatus.Inactive))
.Add(Expression.IsNull("pe.PickupDate"))
.Add(Expression.Eq("pe.PickupRequestSent", false))
.Add(Expression.Eq("pe.MaintenanceRequestSent", false))
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.SetProjection(Projections.Count("ID")).UniqueResult<int>();
次のようにすると、正確なカウントを取得できます。
ICriteria query = FluentSessionManager.GetSession()
.CreateCriteria<Patients>()
.CreateAlias("Locations", "l")
.CreateAlias("l.Branches", "b")
.CreateAlias("PatientsEquipment", "pe")
.Add(Expression.Eq("b.ID", branchID))
.Add(Expression.Eq("CurrentStatus", Enumerations.PatientStatus.Inactive))
.Add(Expression.IsNull("pe.PickupDate"))
.Add(Expression.Eq("pe.PickupRequestSent", false))
.Add(Expression.Eq("pe.MaintenanceRequestSent", false))
.SetResultTransformer(Transformers.DistinctRootEntity);
IList<Patients> patients = query.List<Patients>();
if (patients == null)
{
return 0;
}
return patients.Count();
完全なレコードセットを返してから数えることなく、正確な患者数を取得する方法はありますか?
前もって感謝します。