تنفيذ نفس الوظيفة التي يحتوي عليها الاستعلام البسيط () يصبح أكثر تعقيدًا عند استخدام إطار الكيان والمفاتيح الأولية المركبة. يناقش هذا المقال طرقًا مختلفة لحل هذه المشكلة:
محاولة استخدام tuple تمثل قيمة مفتاح أساسي مركب للانضمام المباشر أو الفشل في العملية في إطار الكيان. وذلك لأن هذه العمليات لا يمكن تحويلها إلى SQL ، لأن tuples لا تعتبر قيمًا أصلية في هذا السياق.
طريقة أخرى تتمثل في استخدام Asenumerable () لاستخراج بيانات جدول قاعدة البيانات في الذاكرة وإجراء التصفية اللازمة باستخدام LINQ إلى الكائنات. ومع ذلك ، بالنسبة للجداول الكبيرة ، فإن هذا الحل غير فعال للغاية.
باستخدام بيان يحتوي على () لكل مكون مفتاح أساسي مركب سيؤدي إلى ترشيح غير صحيح. يمكن أن ينتج عن هذا النهج نتائج مضللة لأن الكيانات التي تحتوي على مكون مطابق واحد فقط سيتم تضمينها عن طريق الخطأ.
يمكنك استخدام استعلام يحتوي على () استعلام يحتوي على القيم المحسوبة المستمدة من مكون المفتاح الأساسي المركب (على سبيل المثال ، entity.id1 * entity.id2). ومع ذلك ، فإن هذا الحل غير قابل للبحث ويؤدي إلى ضعف الأداء.
الطريقة الأكثر قابلية للتطوير هي الجمع بين واتصالات الذاكرة. تستخدم هذه الطريقة تحتوي على () استعلام لتضييق مجموعة النتائج ثم تحسينه بدقة أكثر عبر اتصالات الذاكرة.
بناة الأولية مثل LinqKit يسمحون بإنشاء استعلامات تحتوي على جمل لكل مجموعة قيمة مفتاح أساسية مركبة. على الرغم من أن هذه الطريقة قد تعمل مع قوائم صغيرة ، بالنسبة للقوائم الكبيرة ، سيتم تدهور أدائها.
طريقة أخرى تتمثل في استخدام الاتحاد لدمج استعلامات متعددة تجمع بين كل قيمة مفتاح أساسي مركب. قد يعمل هذا الحل لقوائم صغيرة إلى متوسطة الحجم.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3