سؤال

دعنا نقول أن لدي طاولان (Address و Phone) في SQL التي لها علاقة واحدة إلى واحدة. لقد قمت بإنشاء LinQ المطابق لفصول SQL وتغيير الارتباط إلى OneToOne

أريد استرداد كلا الكائنتين عن طريق تصفية كائن الطفل. على سبيل المثال، لدي الاستعلام التالي الذي يعمل بشكل جيد:

var n = db.Addresses.Where(t => t.Phone.Number == 100);

هل هناك أي طريقة يمكنني تقديم العمل التالي:

var n = db.Addresses.Where(t => t.Phone == new Phone(100));

ال Phone منشئ الطبقة أعلاه تهيئة Number منشأه. كما أستطيع أن أرى الاستعلام المصدر يحتوي على جملة يقوم بمرشحات جدول الهواتف حسب المعرف (المفتاح الأساسي) ولكن جملة الأرقام غير المدرجة.

إذا قمت بتعيين Number ككل مفتاح أساسي في Visual Studio، يتم تضمينه في جملة WHERE ولكن البحث لا يزال لا يعيد أي شيء كقيمة المعلمة لمعرف هو 0. حتى لو كان يعمل، ليس حلا كما هو الحال Number لا ينبغي أن يكون المفتاح الأساسي.

هل كانت مفيدة؟

المحلول

ما تسأله لا معنى له تماما. إذا كنت تريد أن يعطى عنصر الهاتف العنوان، فكن لديك هذا عن طريق الوصول إلى خاصية الهاتف.

لا يمكنك تهيئة نوع واستخدامه إلى المشروع على أنه DLINQ، حيث يتم ترجمة الاستعلام إلى DB. يمكنك القيام بذلك على LinQ إلى الكائنات، ولكن ستجبرك على تعداد قائمتك، والتي من شأنها أن تجلب جميع معلومات قاعدة البيانات في الذاكرة، والتي قد لا تكون جيدة للأداء ...

أنا لا أرى القضية هنا؟ لديك العنوان، البحث عن العمل عليه، ويمكنك الوصول إلى خاصية الهاتف عن طريق الوصول إلى خاصية العنوان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top