splitOn错误不正确

时间:2014-01-14 18:12:14

标签: c# dynamic dapper

Dapper在某些情况下抛出错误的“splitOn”错误消息似乎存在问题。我遇到了一个没有使用Dapper多映射的查询,但却抛出了这个错误。在调试期间,似乎GetTypeDeserializer()在查询上运行,如果它检测到返回数据中没有字段,则会错误地抛出此错误。

if (reader.FieldCount <= startBound)
{
    throw new ArgumentException("When using the multi-mapping APIs ensure you set the splitOn param if you have keys other than Id", "splitOn");
}

注释掉这一部分可以解决问题,Dapper继续正常运行。这是一个已知问题,是否有更好的解决方法?

有问题的SQL类似于:

DECLARE @Temp TABLE (Id INT, Something BIT);
INSERT INTO @Temp SELECT Id, Something from Table;
WITH CTE AS (

  SELECT * FROM dbo.MyTable mt LEFT JOIN @Temp t ON t.Id=mt.Id;

) SELECT CTE.* FROM CTE LEFT JOIN dbo.AnotherTable at ON at.Id=CTE.Id;

当我运行查询时,可能是由于查询设置,当数据不存在时,数据集中没有返回任何列。我的示例可能不会很好地显示,但实际查询很长,这就是行为。

0 个答案:

没有答案