2011-11-16 14 views
15

मैं इसLINQ मिलती

var orderedQueryable = this.participationRequests 
      .Fetch(x => x.CommunityEvent) 
      .Fetch(x => x.CommunityMember) 
       .ThenFetch(x => x.User) 
      .Where(x => x.CommunityMember.Community.Id == communityId) 
      .OrderBy(x => x.CreateDate); 

की तरह एक प्रश्न जहां खंड के बाद this bug की वजह से लाने की जरूरत है की है। समस्या यह है कि Fetch कॉल अतिरिक्त कॉल शामिल करता है। एसक्यूएल में क्वेरी निम्नलिखित की तरह दिखता है:

select * 
from ParticipationRequests participat0_ 
     left outer join CommunityEvents communitye1_ 
     on participat0_.CommunityEventId = communitye1_.Id 
     left outer join CommunityMembers communitym2_ 
     on participat0_.CommunityMemberId = communitym2_.Id 
     left outer join Users user3_ 
     on communitym2_.UserId = user3_.Id 
     inner join CommunityMembers communitym4_ 
     on participat0_.CommunityMemberId = communitym4_.Id 
     inner join CommunityMembers communitym5_ 
     on participat0_.CommunityMemberId = communitym5_.Id 
     inner join Communities community6_ 
     on communitym5_.CommunityId = community6_.Id 
where community6_.Id = 2002 /* @p0 */ 
order by participat0_.CreateDate asc 

यह भीतरी करता CommunityId पर एक शर्त डाल करने के लिए शामिल होने और बाहरी छोड़ दिया है प्राप्त करने में कठिनाई करने के लिए शामिल हो।

मुझे similar question मिला है, लेकिन मेरी क्वेरी में अतिरिक्त जुड़ाव के साथ और बिना अतिरिक्त निष्पादन योजना है।

क्या यह LINQ प्रदाता में एक बग है? शायद एक कामकाज है?

उत्तर

4

Added issue रूप स्लाई उल्लेख किया है, NHibernate करने के लिए Linq के साथ इस एक ज्ञात समस्या है।

मैं लिंक के बजाय एचक्यूएल का उपयोग करके इसके आसपास काम करने में सक्षम था। आपका परिणाम कुछ ऐसा होगा:

CommunityEvent ce = null; 
CommunityMember cm = null; 
var queryable = this.participationRequests 
    .JoinAlias(x => x.CommunityEvent,() => ce) 
    .JoinAlias(x => x.CommunityMember,() => cm) 
    .Where(() => cm.Community.Id == communityId) 
    .OrderBy(x => x.CreationDate); 
1

बिल्कुल यकीन है कि लेकिन अपने जहां क्वेरी निकालें और बजाय एक

की तर्ज पर कुछ में शामिल होने communityId पर x.CommunityMember.Community में शामिल होने के ओ का उपयोग x.communityMember.Community.Id के बराबर होती है नहीं (मेरे वाक्य रचना comp0letely बाहर है , लेकिन nhibernate jira

1

पर एक संकेत के रूप में काम कर सकते हैं)

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

  • कोई संबंधित समस्या नहीं^_^