我尝试使用Dapper使用VB.NET(和.NET 4.0)调用具有几个输出参数的存储过程。
但是,似乎我无法使用DynamicParameters.Add
方法,因为我收到以下编译器错误:
'添加'因为有这个名字的多种成员是模棱两可的 存在于课程' Dapper.DynamicParameters'。
中
...当我尝试写下面一行时:
p.Add("@NewRecordID", DbType:=DbType.Int32, direction:=ParameterDirection.Output)
快速搜索告诉我,当使用具有多个方法的C#库时,有时会发生这种情况,这些方法仅在名称大小写方面有所不同(VB.NET不区分大小写)。搜索DynamicParameters
的Dapper源代码确实显示Add
方法的以下两个重载,但它们都使用相同的情况,编译器应该能够辨别两者之间。
public void Add(string name, object value, DbType? dbType, ParameterDirection? direction, int? size)
public void Add(string name, object value = null, DbType? dbType = null, ParameterDirection? direction = null, int? size = null, byte? precision = null, byte? scale = null)
(我还尝试在调用中添加scale:=Nothing
以强制第二次重载,但无济于事。)
虽然我可以通过将一个匿名对象传递给DynamicParameters
构造函数来解决输入参数,但在添加输出参数时我无法找到解决方法。
我已检查过项目引用,以确保没有多个或不明确的程序集引用。
之前是否有人遇到此问题,并找到了解决方法?
目前,我能想到的唯一选择是在不使用Dapper as implied here的情况下重写存储过程调用。
答案 0 :(得分:1)
根据我的意见,以下是所有可能的解决方案:
DynamicParameters.Add
使用不同的过载模式。