Search code examples
c#servicestackormlite-servicestack

Select statement throwing null exception


Getting a mysterious null exception in second Select statement.

public static string GetSNFromDeviceMacAddress(string macAddress)
{
    string commzSerialNumber = null;
    var dbFactory = EndpointHost.AppHost.TryResolve<IDbConnectionFactory>();
    try
    {
        OrmDataLib.Device device;
        OrmDataLib.Commz commz;
        using (var db = dbFactory.OpenDbConnection())
        {
            // first select works fine
            device = db
                .Select<OrmDataLib.Device>(q => q.MacAddress == macAddress)
                .FirstOrDefault();
            if (null != device)
            {
                // mysterious null exception
                commz = db
                    .Select<OrmDataLib.Commz>(c => c.Id == device.Commz_Id)
                    .FirstOrDefault();
                if (null != commz)
                    commzSerialNumber = commz.SerialNumber;
            }
        }
    }
    catch { }
    return commzSerialNumber;
}

Solution

  • Turns out the receiving DTO was supposed to permit a null value and wasn't.

    The property,

    Commz.Site_id was declared:

    public int Site_id { get; set; }
    

    And should have been declared as:

    public int? Site_id { get; set; }