कोई भी बता सकता है कि आईडी के बजाए इकाई द्वारा क्यों शामिल हो सकता है, आईडी वास्तव में बदसूरत एसक्यूएल उत्पन्न करता है जब वास्तव में अवधारणात्मक रूप से ऐसा करता है जो आपको लगता है कि वही बात थी? जैसेआईडी से बदले में LINQ से इकाइयों में शामिल होने के कारण ग़लत एसक्यूएल
आईडी
from companyDirector in CompanyDirectors
join contactAddress in ContactAddresses
on companyDirector.ContactAddress.Id equals contactAddress.Id
select new {companyDirector, contactAddress}
द्वारा उत्पन्न
FROM [COMPANY] AS [Extent1]
INNER JOIN [ADDRESS] AS [Extent2] ON [Extent1].[CONTACT_ADDRESS_ID] = [Extent2].[CONTACT_ADDRESS_ID]
उदाहरण द्वारा
from companyDirector in CompanyDirectors
join contactAddress in ContactAddresses
on companyDirector.ContactAddress equals contactAddress
select new {companyDirector, contactAddress}
उत्पन्न
FROM [COMPANY] AS [Extent1]
INNER JOIN [ADDRESS] AS [Extent2] ON EXISTS (SELECT
1 AS [C1]
FROM (SELECT 1 AS X) AS [SingleRowTable1]
LEFT OUTER JOIN (SELECT
[Extent3].[CONTACT_ADDRESS_ID] AS [CONTACT_ADDRESS_ID]
FROM [ADDRESS] AS [Extent3]
WHERE [Extent1].[CONTACT_ADDRESS_ID] = [Extent3].[CONTACT_ADDRESS_ID]) AS [Project1] ON 1 = 1
LEFT OUTER JOIN (SELECT
[Extent4].[CONTACT_ADDRESS_ID] AS [CONTACT_ADDRESS_ID]
FROM [ADDRESS] AS [Extent4]
WHERE [Extent1].[CONTACT_ADDRESS_ID] = [Extent4].[CONTACT_ADDRESS_ID]) AS [Project2] ON 1 = 1
WHERE [Project1].[CONTACT_ADDRESS_ID] = [Extent2].[CONTACT_ADDRESS_ID]
)
यह मेरे लिए बहुत अक्षम है, जो आपको आईडी रूट में मजबूर करता है। बाएं क्यों दो बार जुड़ रहे हैं, कभी एक बार ध्यान नहीं ??
यहां तक कि यह सवाल बहुत अच्छा है, हम शायद ही इसका उत्तर यहां दे सकते हैं। एडीओ.NET टीम के लिए यही सवाल है। –
यदि ADO.NET टीम इन खोजशब्दों की सदस्यता नहीं लेती है तो उन्हें किसी के क्रॉसहेयर में होना चाहिए :) –
FWIW, मैं या तो एक नहीं लिखूंगा। मैं कंपनी डायरेक्टर में कंपनी डायरेक्टर से कंपनी डायरेक्टर से कंपनी डायरेक्टर में संपर्क करूँगा। संपर्क एड्रेस्रेस नए {companyDirector, contactAddress} 'का चयन करें, जो सही तरीके से काम करना चाहिए और लिखने के लिए डीबी स्कीमा के ज्ञान की आवश्यकता नहीं है। –