2014-02-25 3 views
0

내 코드에서 linq 쿼리를 처리하는 엔티티 프레임 워크에 문제가 있습니다. SQL Server 2008 R2의 아래 쿼리는 정확한 레코드 집합을 가져옵니다. 이 경우 내 쿼리 또는 EF 관련 문제에 대해 알고 싶습니다. EF 문제인 경우 작업 할 수있는 방법이 있습니다. 이 주변. 각 테이블에는 일대 다 많은 관계가 있습니다. 제 질문에 관한 추가 정보를 제공해야하는지 알려주세요.LINQ EF 쿼리 문제

언급할만한 가치가있는 것은 소스 테이블에 Nullable 인 FrequencyID와 CurrencyID가 많이 있습니다. SQL Server에서 Null로 원본 테이블을 제외하면 총 360 개의 레코드가 나올 것으로 예상됩니다. 어떻게 든 EF는

SQL 쿼리

select 
    spa.PartnerNumber, 
    sp.FirstName, 
    sp.LastName, 
    al.AllowanceName, 
    spa.StartDate, 
    spa.EndDate, 
    fr.FrequencyDescription, 
    cr.CurrencyCode, 
    spa.Note 
from SAP2.PartnerAllowance spa 
join MasterData..AllowanceMaster al on al.AllowanceMasterId = spa.AllowanceID 
join SAP2.Partner sp on spa.PartnerNumber = sp.PartnerNumber 
join MasterData.Currency cr on spa.CurrencyID = cr.CurrencyId 
join MasterData..Frequency fr on spa.FrequencyID = fr.FrequencyID 

관련 LINQ

var sap2Partners = sap2Partner.Get().ToList(); 
var currency = sap2Currency.Get().ToList(); 
var frequency = sap2Frequency.Get().ToList(); 
var sap2PartnerAllowance = sap2PartnerAllowanceRepository.Get().ToList(); 
var allowance = sap2Allowance.Get().ToList(); 
var result = (from spa in sap2PartnerAllowance 
       join spt in sap2Partners on spa.PartnerNumber equals spt.PartnerNumber 
       join al in allowance on spa.AllowanceID equals al.AllowanceMasterId 
       join cr in currency on spa.Currency.CurrencyId equals cr.CurrencyId 
       join fr in frequency on spa.Frequency.FrequencyID equals fr.FrequencyID 
       select new DataEntityUI 
       { 
        PartnerNumber = spa.PartnerNumber, 
        FirstName = spt.FirstName, 
        LastName = spt.LastName, 
        AllowanceName = al.AllowanceName, 
        StartDate = String.Format(CurrentUserPreferences.DateFormat, spa.StartDate), 
        EndDate = String.Format(CurrentUserPreferences.DateFormat, spa.EndDate), 
        Amount = spa.Amount, 
        Frequency = fr.FrequencyDescription, 
        Currency = cr.CurrencyDesciption, 
        Note = spa.Note 

       }).ToList(); 
+0

Linq to SQL 또는 EF입니까? 이 excatly 문제는 무엇입니까? – Andrew

+0

EF와 함께, 통화 및 빈도 표에 참여할 때 문제가 있습니다. 내가 말했듯이, 나는 틀릴 수도 있습니다. 나는이 문제에 처음으로 직면하고있다. – gaganHR

+0

linq 쿼리를 실행할 때 발생하는 오류는 무엇입니까? – elolos

답변

0

문제가 발생할 수있는 라인을 ... 어떤 도움이 가장 환영합니다, 여기에 방해입니다 :

String.Format(CurrentUserPreferences.DateFormat, spa.StartDate) 

쿼리 자체 내에서 db 값의 서식을 지정하기 때문입니다. 극복하기 위해 할 수있는 일은 쿼리에서 결과를 가져온 다음 데이터를 로컬 형식으로 포맷하는 것입니다.

var result = (from spa in sap2PartnerAllowance 
         join spt in sap2Partners on spa.PartnerNumber equals spt.PartnerNumber 
         join al in allowance on spa.AllowanceID equals al.AllowanceMasterId 
         join cr in currency on spa.Currency.CurrencyId equals cr.CurrencyId 
         join fr in frequency on spa.Frequency.FrequencyID equals fr.FrequencyID 
         select new 
         { 
          PartnerNumber = spa.PartnerNumber, 
          FirstName = spt.FirstName, 
          LastName = spt.LastName, 
          AllowanceName = al.AllowanceName, 
          StartDate = spa.StartDate, 
          EndDate = spa.EndDate, 
          Amount = spa.Amount, 
          Frequency = fr.FrequencyDescription, 
          Currency = cr.CurrencyDesciption, 
          Note = spa.Note 

         }).ToList(); 

     var result2 =result.Select(spa=>new DataEntityUI 
         { 
          PartnerNumber = spa.PartnerNumber, 
          FirstName = spa.FirstName, 
          LastName = spa.LastName, 
          AllowanceName = spa.AllowanceName, 
          StartDate = String.Format(CurrentUserPreferences.DateFormat, spa.StartDate), 
          EndDate = String.Format(CurrentUserPreferences.DateFormat, spa.EndDate), 
          Amount = spa.Amount, 
          Frequency = spa.FrequencyDescription, 
          Currency = spa.CurrencyDesciption, 
          Note = spa.Note 
         }).ToList(); 
+0

문제는 join 액티비티에 있습니다. 명확하게 통화 및 빈도 클래스가 잘못 되었기 때문에 문제가 Syntax와 같다고 생각하지 않을 수 있습니다.하지만 그 개선을 가져 주셔서 감사합니다. – gaganHR