患者の記録に機器の履歴の記録がある/ないという状況があります。機器レコードを持たないすべての患者レコード、またはnullではないフィールドを持つ機器レコードを持つすべての患者を検索する必要があります。以下でクエリを実行する方法は機能しません。設備歴のない患者さんは全くいません。助言がありますか?レコードに直接アクセスしたり、更新したりできるため、マッピングは正しいです。40,000を超えるレコードで構成されるデータベースがあるため、すべての患者を引き戻して子のカウントを行うことはできません。速度が遅く、メモリを使いすぎます。
どんな助けでも大歓迎です。前もって感謝します。
public IList<Patients> GetAllPatientsWithoutDevice(int facilityID, string search)
{
ICriteria query = FluentSessionManager.GetSession()
.CreateCriteria<Patients>()
.Add(Expression.Eq("IsDeleted", false))
.CreateAlias("Facilities", "f")
.Add(Expression.Eq("f.ID", facilityID))
.CreateAlias("EquipmentHistory", "eh") // Tried, inner, left and right joins...
.Add(Expression.Or(
Expression.IsNull("EquipmentHistory"),
Expression.IsNotNull("eh.DateOffPatient")
));
query.AddOrder(new Order("FirstName", true))
.AddOrder(new Order("LastName", true));
return query.List<Patients>();
}