je la requête SQL suivante:gauche se joindre à la requête LINQ dans FF4
SELECT DISTINCT *
FROM Documents d
LEFT JOIN
Invoices
ON (i.invoicedocumentid = d.id or i.jobsheetdocumentid = d.id)
INNER JOIN
PurchaseOrders PO ON i.poid = PO.id
LEFT JOIN
HelpDeskFaults f
ON f.id = PO.helpDeskFaultId
LEFT JOIN stores s
ON s.id = f.storeid
WHERE s.name = 'Linden Drive'
OR d.id in (
SELECT u.id as 'docid'
FROM documents u
INNER JOIN stores s
ON u.storeid = s.id
WHERE s.name = 'Linden Drive'
)
ORDER BY d.Id
Jusqu'à présent, ma requête LINQ ressemble à ceci:
var documents = from doc in context.Documents
from invoice in context.Invoices
join po in context.PurchaseOrders on invoice.PurchaseOrder.PurchaseOrderId equals po.PurchaseOrderId
join hdf in context.HelpDeskFaults on po.HelpdeskFaultId equals hdf.ID into hdfpo
from hs in hdfpo.DefaultIfEmpty()
join store in context.Stores on hs.StoreID equals store.ID into hsstore
from hss in hsstore.DefaultIfEmpty()
where hss.Name.Contains(jobSearchParams.StoreName) && (invoice.InvoiceDocumentId == doc.ID || invoice.JobSheetInvoiceId == doc.ID)
select doc;
Mais le sql qui est produit est rien comme ce que je attendu.
Quelqu'un peut-il me donner des indications sur la façon d'améliorer ma requête linq?
Renvoie-t-il les bons résultats en temps opportun? Car si c'est le cas, je ne m'inquiéterais pas trop du SQL produit par EF. – juharr
Aussi vous pouvez simplement les jointures à gauche en utilisant les propriétés de navigation comme 'from hs in po.HelpdeskFaults.DefaultIfEmpty()' – juharr
pas pour ne pas retourner les résultats. Je ne suis pas au travail maintenant, mais le sql est assez éloigné. Je suis confus à propos de la syntaxe de jointure à gauche – dagda1