Dapper.NET multi mapping TSecond Deserializer является нулевым
Я пытаюсь выполнить очень стандартный запрос многократного отображения, используя Dapper, и я получаю следующую ошибку. Я также иногда получаю другую ошибку, когда это, кажется, работает, но я не могу воспроизвести ее в данный момент. Я добавлю его в этот пост, если / когда первая проблема будет решена.
Вот код запроса:
const string storedProc = "dbo.GetStopsForRouteID";
var stops = conn.Query<RouteStop, MapLocation, RouteStop>(
storedProc, (stop, loc) =>
{
stop.Location = loc;
return stop;
}, new { RouteID = routeId }, commandType: CommandType.StoredProcedure);
В Dapper.cs по строке 498:
var deserializer2 = (Func<IDataReader, TSecond>)info.OtherDeserializers[0];
info.OtherDeserializer имеет значение null, что вызывает исключение NullReferenceException.
Это смелость хранимой процедуры:
SELECT
RouteStops.StopID,
RouteStops.Name,
RouteStops.Description,
RouteStops.IsInbound,
RouteStops.Location.Lat as Latitude,
RouteStops.Location.Long as Longitude
FROM dbo.Routes
INNER JOIN dbo.StopsOnRoute ON
Routes.RouteID = StopsOnRoute.RouteID
INNER JOIN dbo.RouteStops ON
StopsOnRoute.StopID = RouteStops.StopID
WHERE Routes.RouteID = @RouteID
ORDER BY StopsOnRoute.SequenceNumber
Я подробно рассмотрел код кода, но не могу найти ничего, что кажется неуместным, кроме десериализатора TFirst, который не равен нулю, а TSecond. Может ли быть проблема, когда он создает десериализатор TSecond, который оставляет его равным нулю?
Вот типы:
public class MapLocation
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}
public class RouteStop {
public int StopID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool IsInbound { get; set; }
public MapLocation Location { get; set; }
}
1 ответ
Вероятно, главная проблема здесь в том, что вы не сказали, как "разделить"; попробуйте добавить параметр:
splitOn: "Latitude"
без этого, насколько может видеть dapper, нет второй части результата (она разбивается на Id
по умолчанию).