كيف يمكنني الحصول على البيانات الكاملة عبر استعلام إطار عمل الكيان


لدي جدولين في قاعدة بيانات أريد دمجهما والعمل مع تلك البيانات.

لذلك استخدمت مقتطف الكود هذا:

ج #
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 وقمت بتصدير ملف CSV. كان هناك 995.101 إدخالاً في تلك القائمة. لذا، في وقت التنفيذ، لا أملك كافة الإدخالات من الجدول الرئيسي للعمل معها.

ربما أي شخص لديه أي فكرة، وكيفية الحصول على ثابتة؟

ما حاولت:

تم التحقق من عارض IEnumeration والخروج بتنسيق CSV
تحقق مرة أخرى من قاعدة البيانات
اقرأ المستندات حول Entity Framework وأشياء 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をコピーしました