मैंने एक इकाई फ्रेमवर्क प्रदाता पर थोड़ा काम किया है और उस पर ध्यान दिया है। मेरा मानना है कि प्रदाता के पास स्थिति में कोई विकल्प नहीं है। कमांड ट्री एंटिटी फ्रेमवर्क द्वारा बनाया गया है और इसे प्रदाता को SQL बनाने के लिए देता है। यह यहां एक पूर्ण अनुमान है, लेकिन हो सकता है कि उस स्थिति में बाएं बाहरी शामिल होने का कारण यह है कि इकाई ढांचे को वास्तव में पता नहीं है कि संदर्भात्मक बाधा डेटाबेस में मौजूद है। उदाहरण के लिए, मैं डेटाबेस से बनाए जाने के बाद इकाई मॉडल के साथ अंदर जा सकता हूं और उन बाधाओं को जोड़/बदल सकता हूं जिनका डेटाबेस क्या कर रहा है, इस पर कोई प्रतिबिंब नहीं है। शायद इसी कारण से, डिजाइनरों ने इसे सुरक्षित खेलना चुना और "बस मामले में" बाएं बाहरी शामिल हो गए।
बहरहाल, मेरा मानना है कि आप एक आंतरिक जुड़ाव प्राप्त कर सकते हैं। उदाहरण के लिए, निम्नलिखित के कारण प्रदाता ने एक LEFT OUTER जॉइन बनाया:
var res2 = from a in ent.answers
select new
{ a.Answer1, a.user.UserName };
हालांकि, एक INNER में निम्नलिखित परिणाम शामिल होते हैं:
res2 = from a in ent.answers
join u in ent.users
on a.UserID equals u.PK
select new { a.Answer1, u.UserName };
साथ ही, निम्न इकाई SQL ने एक आंतरिक जुड़ाव उत्पन्न किया:
ObjectQuery<DbDataRecord> dr = ent.CreateQuery<DbDataRecord>(
"SELECT a.answer1, u.username " +
"FROM answers as a inner join users as u on a.userid = u.pk" );