Я пытаюсь выполнить запрос, который имеет несколько левых объединений, поскольку один из столбцов внешнего ключа имеет значение NULL, и когда Dapper находит запись, в которой этот конкретный столбец имеет значение NULL, исключение NullReferenceException генерируется, когда картограф пытается поставить результат вместе. Я использую "Id" в качестве столбца PK и не имею проблемы с какой-либо из других таблиц, но я не совсем уверен, что это лучший способ обойти эту проблему.
Мне нужно иметь возможность возвращать набор результатов, в которых некоторые из полей (и связанных записей) могут быть нулевыми, а другие могут быть не пустыми. Есть ли способ обойти это без двух отдельных запросов?
здесь часть запроса.. ani.DeviceMacAddress - это нулевая 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;
},
Я предполагаю, что adm
имеет значение null, из местоположения. Итак... проверьте это:
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;