मेरे पास एक क्वेरी है जो SQL के लिए पूरी तरह से अनुवाद योग्य है। अज्ञात कारणों से LINQ ने .NET (डेटाबेस में नहीं) में निष्पादित करने के लिए अंतिम Select()
का निर्णय लिया है, जो डेटाबेस के विरुद्ध बहुत से अतिरिक्त SQL क्वेरी (प्रत्येक आइटम प्रति) चलाने का कारण बनता है।डेटाबेस में पूरी क्वेरी का मूल्यांकन करने के लिए LINQ से SQL को कैसे बल देना है?
वास्तव में, मैं एक 'अजीब' जिस तरह से एसक्यूएल करने के लिए पूर्ण अनुवाद के लिए मजबूर करने के लिए मिला:
MainCategories.Select(e => new
{
PlacementId = e.CatalogPlacementId,
Translation = Translations.Select(t => new
{
Name = t.Name,
// ...
}).FirstOrDefault()
})
:
मैं एक प्रश्न है (यह एक बहुत सरलीकृत संस्करण है, जो अभी भी रूप में की उम्मीद काम नहीं करता है)
01: अगर मैं एक औरSelect()
जो सिर्फ प्रतियां सभी सदस्यों संलग्न,
SELECT [t0].[CatalogPlacementId] AS [PlacementId]
FROM [dbo].[MainCategories] AS [t0]
SELECT TOP (1) [t0].[Name]
FROM [dbo].[Translations] AS [t0]
SELECT TOP (1) [t0].[Name]
FROM [dbo].[Translations] AS [t0]
...
हालांकि:
यह होगा एसक्यूएल प्रश्नों का एक बहुत उत्पन्न करता है
.Select(e => new
{
PlacementId = e.PlacementId,
Translation = new
{
Name = e.Translation.Name,
// ...
}
})
यह एक एसक्यूएल बयान में यह संकलन होगा:
SELECT [t0].[CatalogPlacementId] AS [PlacementId], (
SELECT [t2].[Name]
FROM (
SELECT TOP (1) [t1].[Name]
FROM [dbo].[Translations] AS [t1]
) AS [t2]
) AS [Name]
FROM [dbo].[MainCategories] AS [t0]
कोई सुराग क्यों? LINQ से SQL को एक और क्वेरी जेनरेट करने के लिए मजबूर कैसे करें (दूसरी प्रतिलिपि Select()
के बिना)?
नोट: मैंने इसे वास्तव में सरल बनाने के लिए क्वेरी में अपडेट किया है।
पुनश्च: केवल, विचार मैं पोस्ट-प्रक्रिया/समान पैटर्न के साथ प्रश्नों को बदलने के लिए (एक और Select()
जोड़ने के लिए) है।
कृपया MyQuery() दिखाएं। –