2009-09-21 17 views
8

मेरी डेटाबेस में शामिल होने के साथ मैं है ... TableA, TableB और TableCLINQ तालिका इकाई की रूपरेखा

TableB सिर्फ 2 कॉलम, TableA और TableC की प्राथमिक कुंजी है, तो यह वास्तव में के बीच कई रिश्ते के लिए एक एक को परिभाषित करता है है दो तालिकाओं

क्या मैं एसक्यूएल का उपयोग कर क्या करना चाहते है:

SELECT * 
FROM TablesA a 
JOIN TablesB b ON a.AID = b.AID 
WHERE b.BID = 1 

इकाई की रूपरेखा में यह मेरे लिए एक TablesB पैदा नहीं करता में शामिल होने के ऐसा करने के लिए, मुझे लगता है कि क्योंकि TableB केवल विदेशी कुंजी है!

तो मैं इसे कैसे कर सकता हूं?

+0

http://stackoverflow.com/questions/21051612/entity-framework-join-3-tables –

उत्तर

7

एक LINQ के साथ शामिल करने से काफी

from a in TablesA 
join b in TablesB 
on a.AID equals b.AID 
into joined 
where b.BID == 1 
select joined 

मुझे लगता है कि असली सवाल हो सकता है सरल है - तुम क्यों TablesB के लिए एक इकाई वर्ग नहीं है? हमें जवाब देने के लिए हमें और जानकारी चाहिए।

+0

मैं: तो तुम सब नमूने के लिए, इन नेविगेशन गुण उपयोग करने की आवश्यकता ऐसा लगता है क्योंकि टेबलबी विदेशी कुंजी से बना है इसलिए यह दिखाया नहीं गया है! –

3

जब आप डेटाबेस से तालिकाओं को आयात करते हैं, तो इकाई ढांचा तालिका तालिका से छुटकारा पाता है और कई संबंधों के लिए टेबलए और टेबलसी दिखाता है। टेबलए में एक नेविगेशन प्रॉपर्टी टेबलसी और इसके विपरीत है।

var tableARow= db.TableA.First(s => s.Id == 1); 
if (!tableARow.TableCs.IsLoaded) { tableARow.TableCs.Load(); } 

या

var tableARow= db.TableA.Include("TableCs").First(s => s.Id == 1); 
+0

धन्यवाद परेशान, यह और अधिक दिखता है। बस एक बात। S.Id == 1 के साथ, यह वास्तव में tableC की आईडी है जिसे मुझे 1 पर सेट करने की आवश्यकता है, तालिका नहीं। मुझे यह कैसे करना है? तो यह एक टेबल ए इकाई है जिसे मैं वापस करना चाहता हूं, लेकिन मैं TableC.ID = 1 वाले टेबलसी को भरना चाहता हूं .... समझ में आता है? –

+0

तालिका ए से पंक्तियों की एक सूची जिसमें आईडी सी के साथ तालिका सी से पंक्तियां हैं: 1: var tablearows = db.TableC.Include ("tableAs")। (C => c.Cid == 1)। चयन करें (सी => सी .टेबलएएस)। टॉलिस्ट(); – Puzzled

संबंधित मुद्दे