我正在尝试使用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);
在第498行的Dapper.cs中:
var deserializer2 = (Func<IDataReader,TSecond>)info.OtherDeserializers[0];
info.OtherDeserializers为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
我已经对dapper代码进行了广泛的研究,但除了TFirst的deserialiser不是null之外我找不到任何看似不合适的东西,但是TSecond是.当它创建TSecond的反序列化器并将其保留为null时会出现问题吗?
以下是类型:
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; } }
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。