Je fais une requête sur deux tables différentes. Dans la première requête, je reçois des identifiants que je dois ensuite vérifier dans une autre table. Ensuite, je répète la première requête avec le résultat de la deuxième requête.Simplifier plusieurs requêtes nhibernate
Cela ne peut pas être la meilleure façon de procéder.
Mais je n'ai pas trouvé un bon moyen de le résoudre. Donc, de l'aide serait appréciée.
IntOrderInvoiceCostOut y = null;
var list = session.QueryOver<IntOrderInvoiceCostOut>(() => y)
.Where(x => x.IntegrationHandleDate == null)
.Select(Projections.Distinct(Projections.Property(() => y.Externalid)))
.List<string>();
var nonPreliminaryOrders = session.QueryOver<RefImplOrderEntity>()
.WhereRestrictionOn(x => x.ExternalId).IsIn(list.ToList())
.Where(x => x.StatusTypeId != 95)
.Select(x => x.ExternalId)
.List<string>();
var finalList = session.QueryOver<IntOrderInvoiceCostOut>()
.WhereRestrictionOn(x => x.Externalid).IsIn(nonPreliminaryOrders.ToList())
.Where(x => x.IntegrationHandleDate == null)
.OrderBy(x => x.IntegrationCreateDate)
.Asc
.List();
Le code fonctionne ... mais je ne suis pas vraiment moche.
Je ne me souviens pas du haut de ma tête, mais vous devriez être en mesure d'utiliser les sous-requêtes pour ce faire. http://www.andrewwhitaker.com/blog/2014/10/24/queryover-series-part-8-working-with-subqueries/ –
Pouvez-vous utiliser Linq? –