Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 衣冠楚楚的劈叉不起作用_C#_Ms Access_Ms Access 2010_Dapper - Fatal编程技术网

C# 衣冠楚楚的劈叉不起作用

C# 衣冠楚楚的劈叉不起作用,c#,ms-access,ms-access-2010,dapper,C#,Ms Access,Ms Access 2010,Dapper,我正在尝试使用Dapper运行MS Access查询。我一直收到以下错误消息:当使用多重映射API时,如果您的密钥不是Id,请确保设置splitOn参数 这是我正在使用的代码: IEnumerable<BalanceHeader> balanceHeaders = _connection.Query<BalanceHeader, Currency, BalanceHeader>( "GetFullBalanceHeaders",

我正在尝试使用Dapper运行MS Access查询。我一直收到以下错误消息:当使用多重映射API时,如果您的密钥不是Id,请确保设置splitOn参数

这是我正在使用的代码:

IEnumerable<BalanceHeader> balanceHeaders = 
    _connection.Query<BalanceHeader, Currency, BalanceHeader>(
        "GetFullBalanceHeaders", 
        (header, currency) => 
        {
            header.Currency = currency;
            return header;
        }, 
        splitOn: "IsoCode", 
        commandType: CommandType.StoredProcedure);

splitOn参数已明确设置,那么我还做错了什么?或者这是MS Access的一个问题?

将Dapper的版本从1.25更新到1.38已经解决了这个问题

如果只使用sql查询而不使用存储过程,它是否有效?也许用存储过程编写旧式ADO.Net代码来查看数据读取器中返回了哪些列名?我用SQL查询而不是存储过程进行了尝试,结果没有什么不同。这让我觉得Access并没有按照预期的方式从查询中返回列名,具体来说,
Currency.IsoCode
不会作为
IsoCode
返回。您以前是否成功使用过Dapper with Access?使用相同的连接提供程序?尚未使用Access尝试此特定案例。如果我使用普通的旧ADO.net检索列名,我可以看到它们正是您所期望的。等代码=等代码。访问问题?Dapper只是在幕后使用ADO.Net,所以如果你看到的就是这样,那么我就不知所措了。希望从事Dapper工作的人能看到这个问题并帮你解决。尽管另一种选择是获取简洁的源代码并调试到其中,以查看问题所在。
SELECT BalanceHeader.Reference
,  BalanceHeader.ReferenceCount
,  BalanceHeader.GroupName
,  Currency.IsoCode
,  Currency.ExchangeRate
FROM [Currency]
INNER JOIN BalanceHeader ON Currency.IsoCode = BalanceHeader.IsoCode;