2012-05-03 3 views
0

주소가 할당 된 국가가 있는데, 할당 된 국가가있을 수 있습니다. 나는이 처리 어떻게쿼리 오버런 예측에서 null 값 처리

:

InvoiceAddress invoiceAddres = null; 
Country InvoiceAddressCountry = null; 
Counterpart counterpart = null; 
CounterpartTabDTO result = null; 

// projections for DTO-mapping 
var projections = new[] 
         { 
          Projections.Property(() => counterpart.CounterpartId).WithAlias(() => result.InternalID), 
          Projections.Property(() => counterpart.GlobalCounterpartId).WithAlias(() => result.BasicInfo_GlobalCounterpartyID), 
          Projections.Property(() => counterpart.Name).WithAlias(() => result.BasicInfo_Name), 
          Projections.Property(() => counterpart.ShortName).WithAlias(() => result.BasicInfo_ShortName), 
          Projections.Property(() => counterpart.PhoneNumber).WithAlias(() => result.BasicInfo_Telephone), 
          Projections.Property(() => counterpart.Webpage).WithAlias(() => result.BasicInfo_WWW), 
          Projections.Property(() => counterpart.Language).WithAlias(() => result.BasicInfo_Language), 
          Projections.Property(() => counterpart.VAT).WithAlias(() => result.BasicInfo_VAT), 
          Projections.Property(() => counterpart.CompanyRegistrationNumber).WithAlias(() => result.BasicInfo_CompanyRegistationno), 
          Projections.Property(() => invoiceAddres.Name).WithAlias(() => result.BasicInfo_InvoiceAddressContactPerson), 
          Projections.Property(() => invoiceAddres.Street).WithAlias(() => result.BasicInfo_InvoiceAddressAddress), 
          Projections.Property(() => invoiceAddres.PostalCode).WithAlias(() => result.BasicInfo_InvoiceAddressPostalCode), 
          Projections.Property(() => invoiceAddres.City).WithAlias(() => result.BasicInfo_InvoiceAddressCity), 
          Projections.Property(() => invoiceAddres.Area).WithAlias(() => result.BasicInfo_InvoiceAddressArea), 
          Projections.Property(() => InvoiceAddressCountry.PrintableName).WithAlias(() => result.BasicInfo_InvoiceAddressCountry), 
          Projections.Property(() => invoiceAddres.Department).WithAlias(() => result.BasicInfo_InvoiceAddressDepartment), 
          Projections.Property(() => invoiceAddres.Fax).WithAlias(() => result.BasicInfo_InvoiceAddressFax), 
          Projections.Property(() => invoiceAddres.MainEmail).WithAlias(() => result.BasicInfo_InvoiceAddressEmail), 
         }; 
var query = Session.QueryOver(() => counterpart) 
    .JoinQueryOver<InvoiceAddress>(x => x.InvoiceAddresses,() => invoiceAddres) 
    .Where(x => x.IsDefault) 
    .JoinQueryOver<Country>(() => invoiceAddres.Country,() => InvoiceAddressCountry) 
    .Select(projections); 

문제는 null이 될 수 InvoiceAddressCountry이다. 그럴 경우 result.BasicInfo_InvoiceAddressCountry 속성이 null로 유지됩니다. 명확히하기 위해 위 코드는 작동하지 않습니다. null을 처리 할 수 ​​없습니다. 난 당신이 왼쪽 사용해야합니다한다고 가정 할 수 있습니다 단어에서

답변

1

가입 :

.Left.JoinQueryOver(() => invoiceAddres.Country,() => InvoiceAddressCountry)