2014-09-01 4 views
1

외부 키 열 중 하나가 nullable이므로 Dapper가 해당 특정 쿼리를 실행하는 쿼리를 실행하려고합니다. 열이 Nullable 인 경우 매퍼가 결과를 함께 넣으려고하면 NullReferenceException이 throw됩니다. 'ID'를 내 PK 열로 사용하고 있으며 다른 테이블에 문제가 없지만이 문제를 해결하는 가장 좋은 방법은 아닙니다.nullable FKs가있는 쿼리를 실행할 때 Dapper가 throw되는 NullReferenceExceptions

필자는 일부 필드 (및 관련 레코드)가 null 일 수 있고 다른 필드가 null이 아닐 수있는 결과 집합을 반환 할 수 있어야합니다. 두 개의 개별적인 구분없이이 문제를 해결할 수있는 방법이 있습니까? 쿼리?

여기 쿼리의 일부입니다. ani.DeviceMacAddress는 nullable FK입니다.

(query, 
(ani, adm, d, ma, sma, n, i, sni) => 
    { 
     ani.DeviceMacAddress = adm; 
     adm.Device = d; // Throws NullReferenceException here 
     adm.MacAddress = ma; 
     ani.NetworkV4 = n; 
     ani.IpAddressV4 = i; 
     ani.Status = sni; 
     ma.Status = sma; 
     return ani; 
    }, 
+1

QueryMultiple의 작업입니까? 적절한지도에서 열이 null이 아닌 곳으로 데이터 집합을 제한하는 쿼리와 열이 null 인 데이터 집합을 자체지도와 함께 제한하는 쿼리가 있습니까? –

답변

1

나는 위치에서 adm이 (으)로 추측됩니다. 그래서 ... 확인해보십시오 :

ani.DeviceMacAddress = adm; 
if(adm != null) { 
    adm.Device = d; 
    adm.MacAddress = ma; 
} 
ani.NetworkV4 = n; 
ani.IpAddressV4 = i; 
ani.Status = sni; 
if(ma != null) { 
    ma.Status = sma; 
} 
return ani; 
+0

환상적입니다. 감사합니다. 나는지도 자체에서 null을 확인하는 것을 생각조차하지 않았다. –