मान लें कि आपके पास ये दो टेबल हैं:

CARS
ID   CAR_MODEL 
11   Mustang          
22   Camaro           
33   F-150     

PARTS
ID   CAR_ID  PART_NAME       
1    11      Steering Wheel  
2    22      Steering Wheel 
3    22      Headlights

आपको एक खोज फ़ॉर्म बनाना होगा। आप यह काम कैसे करेंगे:

var query = db.CARS.include(u => u.PARTS);

if(model.CarPartName != "")
   query = query.where(u => u.PARTS.PART_NAME == model.CarPartName); //this doesn't work

return query.ToList();

वर्तमान में PARTS.CAR_ID और CARS.ID के बीच एक विदेशी कुंजी संबंध है, लेकिन किसी कारण से जब मैं u.PARTS का प्रयास करता हूं। मैं कॉलम नाम पर संलग्न नहीं कर सकता।

इस वैकल्पिक कार्य को कैसे शामिल किया जाए, इस पर कोई विचार?

0
user7560542 15 अक्टूबर 2018, 20:37

1 उत्तर

सबसे बढ़िया उत्तर

यह उस तरह से काम नहीं करेगा, क्योंकि एक कार के कई हिस्से हो सकते हैं, इस प्रकार u.PARTS एक संग्रह लौटा रहा है। इस समस्या के कई समाधान हैं, आप कार संग्रह (जैसा आपने किया) से शुरू कर सकते हैं, या आप PARTS संग्रह से शुरू कर सकते हैं। यदि आपने PARTS संग्रह के साथ शुरुआत की है, तो यह ऐसा दिखेगा:

var query = db.PARTS.Include(p => p.Car);

if(model.CarPartName != "")
   query = query.Where(u => u.PART_NAME == model.CarPartName); 

return query.Select(p => p.Car).Distinct().ToList();

कारों के साथ:

var query = db.CARS.include(u => u.PARTS);

if(model.CarPartName != "")
   query = query.Where(u => u.PARTS.Any( up => up.PART_NAME == model.CarPartName)); 

return query.ToList();

नोट: मैंने पहला जोड़ा, सिर्फ इसलिए कि मैं दिखाना चाहता था कि क्या हो रहा है।

1
Cetin Basoz 15 अक्टूबर 2018, 17:45