Ich versuche, eine Abfrage auszuführen, die eine Anzahl von linken Joins aufweist, da eine der Fremdschlüsselspalten nullwertfähig ist und wenn Dapper einen Datensatz findet, in dem diese bestimmte Spalte nullfähig ist, wird eine NullReferenceException ausgelöst, wenn der Mapper versucht, sie einzufügen das Ergebnis zusammen. Ich benutze "Id" als meine PK-Spalte und hatte kein Problem mit einem der anderen Tabellen, aber ich bin mir nicht sicher, der beste Weg, um diesen zu umgehen.
Ich muss in der Lage sein, eine Reihe von Ergebnissen zurückzugeben, in denen einige der Felder (und zugehörige Datensätze) null sein können und andere nicht null sein können. Gibt es eine Möglichkeit, dies ohne zwei getrennte Abfragen zu umgehen?
Hier ist ein Teil der Abfrage .. ani.DeviceMacAddress ist der NULL-fähige 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;
},
Ich schätze adm
ist null, von der Stelle. Also ... sieh dir das an:
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;