2012-01-29 13 views
11

मैं निम्नलिखित LINQ क्वेरी जो एक एसक्यूएल सर्वर समर्थित भंडार के खिलाफ NHibernate का उपयोग करता है ...NHibernate Linq समूह के आधार पर ठीक से एसक्यूएल सर्वर में समूह में विफल रहता है

var casesByCaseOwner = this.preGrantDetailRepository.All 
    .Where(x => x.CaseFileLocation.Id == cflId) 
    .GroupBy(x => x.CaseOwner) 
    .Select(x => new StagSummaryForCfItem 
    { 
     Id = x.Key.Id, 
     Description = x.Key.Name, 
     NumberOfCases = x.Count(), 
     UninvoicedNetFee = x.Sum(y => y.UninvoicedNetFee), 
     UninvoicedDisbursement = x.Sum(y => y.UninvoicedDisbursement) 
    }).AsEnumerable(); 

हालांकि है, यह शिकायत है कि SQL सर्वर समूह में असमर्थ है CaseOwner.Name कॉलम द्वारा क्योंकि यह चयनित सूची या समूह खंड में शामिल नहीं है। डेटाबेस की दुनिया से आ रहा है, मैं समझता हूं कि त्रुटि, हालांकि, मुझे यकीन नहीं है कि एनएचबीर्नेट को Id और Name दोनों द्वारा समूह में कैसे मजबूर किया जाए, लेकिन अभी भी मेरे चयन में CaseOwner इकाई उपलब्ध है।

उत्तर

6

मैं जवाब अंत में ...

 var casesByCaseOwner = this.preGrantDetailRepository.All 
    .Where(x => x.CaseFileLocation.Id == cflId) 
    .GroupBy(x => new { x.CaseOwner.Id, x.CaseOwner.Name }) 
    .Select(x => new StagSummaryForCfItem 
    { 
     Id = x.Key.Id, 
     Description = x.Key.Name, 
     NumberOfCases = x.Count(), 
     UninvoicedNetFee = x.Sum(y => y.UninvoicedNetFee), 
     UninvoicedDisbursement = x.Sum(y => y.UninvoicedDisbursement) 
    }).AsEnumerable(); 

    return casesByCaseOwner; 

यह nicley काम करता पाया गया, यह पता चला है मैं गुण मैं पर समूह के लिए चाहते हैं के साथ एक नई इकाई परियोजना के लिए की जरूरत है।

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