हमें एकल डेवलपर मशीन और कुछ क्लाइंट पर समस्या है। एकल लिंक क्वेरी दो अलग-अलग SQL क्वेरी उत्पन्न करती है। समस्या वास्तव में है कि दूसरी क्वेरी में "बाहरी आवेदन" कथन है जो फ़ायरबर्ड का समर्थन नहीं करता है। हमें लगता है कि यह कोड मुद्दा नहीं है, लेकिन पर्यावरणीय मुद्दा है, लेकिन मैं कोड पेस्ट कर दूंगा।इकाई फ्रेमवर्क विभिन्न वर्कस्टेशन पर विभिन्न प्रश्न उत्पन्न करता है
LINQ: बाहरी साथ
AIds = (from x in context.RISK_T_ASSESS_HIST
where (x.ID_RISKOBJECT.HasValue && x.F_CREATEDON >= Freq.StartDate && x.F_CREATEDON <= Freq.EndDate)
group x by x.ID_RISKOBJECT into gr
let lastCreated = gr.Max(p => p.F_CREATEDON)
select new
{
ObjId = gr.Key
,
LastStatus = gr.Where(p => p.F_CREATEDON == lastCreated && p.ID_RISKOBJECT == gr.Key).Select(p => p.F_STATUS).FirstOrDefault()
}).Where(x => x.LastStatus == 0 || x.LastStatus == 1).Select(x => x.ObjId.Value).ToArray();
एसक्यूएल लागू
SELECT
"G"."ID_RISKOBJECT" AS "ID_RISKOBJECT"
FROM (SELECT
"C"."A1" AS "C1",
"C"."K1" AS "ID_RISKOBJECT"
FROM (SELECT
"E"."ID_RISKOBJECT" AS "K1",
MAX("E"."F_CREATEDON") AS "A1"
FROM "RISK_T_ASSESS_HIST" AS "E"
WHERE (("E"."ID_RISKOBJECT" IS NOT NULL) AND ("E"."F_CREATEDON" >= @p__linq__0)) AND ("E"."F_CREATEDON" <= @p__linq__1)
GROUP BY "E"."ID_RISKOBJECT"
) AS "C") AS "G"
OUTER APPLY (SELECT FIRST (1)
"I"."F_STATUS" AS "F_STATUS"
FROM "RISK_T_ASSESS_HIST" AS "I"
WHERE (((("I"."ID_RISKOBJECT" IS NOT NULL) AND ("I"."F_CREATEDON" >= @p__linq__0)) AND ("I"."F_CREATEDON" <= @p__linq__1)) AND (("G"."ID_RISKOBJECT" = "I"."ID_RISKOBJECT") OR (("G"."ID_RISKOBJECT" IS NULL) AND ("I"."ID_RISKOBJECT" IS NULL)))) AND (("I"."F_CREATEDON" = "G"."C1") AND ("I"."ID_RISKOBJECT" = "G"."ID_RISKOBJECT"))) AS "J"
WHERE (0 = "J"."F_STATUS") OR (1 = "J"."F_STATUS")
कार्य एसक्यूएल
SELECT
"B"."ID_RISKOBJECT" AS "ID_RISKOBJECT"
FROM (SELECT
"C"."ID_RISKOBJECT" AS "ID_RISKOBJECT",
(SELECT FIRST (1)
"I"."F_STATUS" AS "F_STATUS"
FROM "RISK_T_ASSESS_HIST" AS "I"
WHERE (((("I"."ID_RISKOBJECT" IS NOT NULL) AND ("I"."F_CREATEDON" >= @p__linq__0)) AND ("I"."F_CREATEDON" <= @p__linq__1)) AND (("C"."ID_RISKOBJECT" = "I"."ID_RISKOBJECT") OR (("C"."ID_RISKOBJECT" IS NULL) AND ("I"."ID_RISKOBJECT" IS NULL)))) AND (("I"."F_CREATEDON" = "C"."C1") AND ("I"."ID_RISKOBJECT" = "C"."ID_RISKOBJECT"))) AS "C1"
FROM (SELECT
"D"."A1" AS "C1",
"D"."K1" AS "ID_RISKOBJECT"
FROM (SELECT
"F"."ID_RISKOBJECT" AS "K1",
MAX("F"."F_CREATEDON") AS "A1"
FROM "RISK_T_ASSESS_HIST" AS "F"
WHERE (("F"."ID_RISKOBJECT" IS NOT NULL) AND ("F"."F_CREATEDON" >= @p__linq__0)) AND ("F"."F_CREATEDON" <= @p__linq__1)
GROUP BY "F"."ID_RISKOBJECT"
) AS "D"
) AS "C"
) AS "B"
WHERE (0 = "B"."C1") OR (1 = "B"."C1")
क्वेरी MSSQL इंजन के लिए उत्पन्न
(हम अपने एपीपी में दो डाटाबेस इंजन का समर्थन करता है)SELECT
[Project1].[ID_RISKOBJECT] AS [ID_RISKOBJECT]
FROM (SELECT
[GroupBy1].[A1] AS [C1],
[GroupBy1].[K1] AS [ID_RISKOBJECT]
FROM (SELECT
[Extent1].[ID_RISKOBJECT] AS [K1],
MAX([Extent1].[F_CREATEDON]) AS [A1]
FROM [dbo].[RISK_T_ASSESS_HIST] AS [Extent1]
WHERE ([Extent1].[ID_RISKOBJECT] IS NOT NULL) AND ([Extent1].[F_CREATEDON] >= @p__linq__0) AND ([Extent1].[F_CREATEDON] <= @p__linq__1)
GROUP BY [Extent1].[ID_RISKOBJECT]
) AS [GroupBy1]) AS [Project1]
OUTER APPLY (SELECT TOP (1)
[Extent2].[F_STATUS] AS [F_STATUS]
FROM [dbo].[RISK_T_ASSESS_HIST] AS [Extent2]
WHERE ([Extent2].[ID_RISKOBJECT] IS NOT NULL) AND ([Extent2].[F_CREATEDON] >= @p__linq__0) AND ([Extent2].[F_CREATEDON] <= @p__linq__1) AND (([Project1].[ID_RISKOBJECT] = [Extent2].[ID_RISKOBJECT]) OR (([Project1].[ID_RISKOBJECT] IS NULL) AND ([Extent2]. [ID_RISKOBJECT] IS NULL))) AND ([Extent2].[F_CREATEDON] = [Project1].[C1]) AND ([Extent2].[ID_RISKOBJECT] = [Project1].[ID_RISKOBJECT])) AS [Limit1]
WHERE [Limit1].[F_STATUS] IN (0,1)
क्या दृष्टिकोण आप एफई के लिए उपयोग कर रहे हैं? कोड पहले या डेटाबेस पहले? अर्थात। क्या आप डीबीकॉन्टेक्स्ट और डीबीसेट से प्राप्त करते हैं या आपके पास .edmx xml फ़ाइलें हैं? –
डेटाबेस पहले, देवी विरासत के मुद्दों, हमारे पास edmx है। यदि उन्हें आवश्यकता हो तो मैं उन्हें प्रदान कर सकता हूं। – Lightning3
हम mssql का भी समर्थन करते हैं, मैं कुछ परीक्षण करूँगा, और मैं – Lightning3