मैं एंटिटी फ्रेमवर्क क्वेरी के माध्यम से पूरा डेटा कैसे प्राप्त करूं?


मेरे पास डेटाबेस में दो टेबल हैं जिन्हें मैं संयोजित करना चाहता हूं और उस डेटा के साथ काम करना चाहता हूं।

इसलिए मैंने उस कोडनिपेट का उपयोग किया:

सी#
var listOfFoundRespIds = (from a in context.Adresses
						  join e in context.ExtraData
							  on a.LFD equals e.lfd
						  where a.PROJID == 2048
						  select new
						  {
							  RESPID = e.str03,
							  LFD = e.lfd,
							  PROJID = a.PROJID
						  })
						  .ToList();

डेटाबेस तालिका में स्वयं 31.966.037 प्रविष्टियाँ हैं।
डिबगिंग करते समय (सीधे कोड निष्पादन के बाद) मैंने iEnumeration Viewer शुरू किया और context.Adresses पर गौर किया और एक सीएसवी निर्यात किया। उस सूची में 995.101 प्रविष्टियाँ थीं। इसलिए निष्पादन के समय मेरे पास इसके साथ काम करने के लिए मुख्य तालिका से सभी प्रविष्टियाँ नहीं हैं।

शायद किसी के पास कोई विचार हो, कैसे ठीक किया जाए?

मैंने क्या प्रयास किया है:

आईएन्यूमरेशन व्यूअर और सीएसवी चेकआउट की जांच की गई
डेटाबेसटेबल को दोबारा जांचें
एंटिटी फ्रेमवर्क और अन्य SQL सामग्री के बारे में दस्तावेज़ पढ़ें।

समाधान 1

आप एक प्रदर्शन कर रहे हैं INNER JOIN – आपको केवल इससे परिणाम वापस मिलेंगे Addresses तालिका जिसमें संबंधित रिकॉर्ड है ExtraData मेज़।

यदि आप से सभी रिकॉर्ड चाहते हैं Addresses तालिका, भले ही उनके पास कोई संगत रिकॉर्ड न हो ExtraTableतो आपको एक प्रदर्शन करने की आवश्यकता है LEFT JOIN.

बाएं बाहरी जोड़ निष्पादित करें (LINQ C# में) – C# | माइक्रोसॉफ्ट लर्न[^]

सी#
from a in context.Adresses
join ed in context.ExtraData on a.LFD equals e.lfd into edg
from e in ed.DefaultIfEmpty()
where a.PROJID == 2048
select new
{
    RESPID = e.str03,
    LFD = e.lfd,
    PROJID = a.PROJID
}

コメント

タイトルとURLをコピーしました