Dapper在执行具有可为null的FK的查询时抛出NullReferenceException

本文关键字:查询 FK NullReferenceException null 执行 Dapper | 更新日期: 2023-09-27 18:20:07

我正试图执行一个具有多个左联接的查询,因为其中一个外键列是可以为null的,当Dapper找到某个记录中该特定列可以为null时,当映射程序试图将结果放在一起时,会引发NullReferenceException。我使用"Id"作为我的PK列,其他表都没有问题,但我不太确定解决这个问题的最佳方法。

我需要能够返回一组结果,其中一些字段(和相关记录)可能为null,而其他字段可能不为null。。有没有一种方法可以绕过这个问题而不需要两个单独的查询?

这是查询的一部分。。阿尼。DeviceMacAddress是可为null的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;
    },

Dapper在执行具有可为null的FK的查询时抛出NullReferenceException

从位置上看,我猜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;