मेरे पास देखने के लिए कुछ दिलचस्प कोड है।
मेरे पास तीन टेबल हैं:
TablePK
यूज़र आईडी
TableBFKID
स्कोर
टेबल बी में 3 कॉलम हैं:
TablePK
नाम
संक्षिप्त नाम
तालिका सी में 4 कॉलम हैं:
TablePK
ScoreMin
ScoreMax
संशोधक
तो जब पूरा जुड़ा होता है तो ऐसा लगता है:
SELECT B.ShortName
, A.Score
, C.Modifier
FROM TableA A
INNER JOIN TableB B ON a.TablePK= B.TablePK
INNER JOIN TableC C ON A.Score BETWEEN C.ScoreMin AND C.ScoreMax
परिणाम इस तरह दिखेगा:
शॉर्टनाम, स्कोर, संशोधक। पूर्व:
सीएए, 1 9, 4
अब मुझे पता है कि एक वास्तविक पीके या एफके होने पर एक इकाई फ्रेमवर्क कैसे शामिल किया जाए, या यहां तक कि यदि केवल 0: 1 संबंध है।
लेकिन जब आप न तो पीके और न ही एफके होते हैं तो आप कैसे जुड़ते हैं?
उत्तर:
उत्तर № 1 के लिए 1LINQ, LINQ से इकाइयों समेत, केवल इक्की-जॉइन का समर्थन करता है।
लेकिन आप सीधे एसक्यूएल चला सकते हैं:
var res = myContext.Database.SqlQuery<TResult>("SQL goes here", parmeters...);
और ईएफ परिणाम के कॉलम को गुणों के मानचित्र पर मैप करेगा TResult
(जिसे संदर्भ के अन्य कनेक्शन की आवश्यकता है: इसे एक इकाई प्रकार होने की आवश्यकता नहीं है DbSet
संदर्भ में टाइप की गई संपत्ति)।
उत्तर № 2 के लिए 1
इस मामले में मैं उनसे जुड़ने की कोशिश नहीं करता हूं, अनगिनत तालिका से चयन करने के लिए बस अपने लिनक्स में उप-चयन का उपयोग करें जहां स्कोर आपकी वांछित श्रेणियों के बीच हैं।
var results = context.TableA
.Select(a => new {
score = a.Score, //add all needed columns
tableCs = context.TableC.Where(c => a.Score >= c.ScoreMin && a.Score <= c.ScoreMax)
});