请参阅以下代码。
System.Windows.Forms
运行以下错误时显示。
为过程或函数RetrieveLabors提供的参数数量不足。 请注意,该函数有两个参数,值都在那里。
我尝试过以下所有其他方式:
public static int Sum(int[][] arr)
{
int total = 0;
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
total += arr[i][j];
}
}
return total;
}
static void Main(string[] args)
{
int[][] arr = new int[][]
{
new int [] {1},
new int [] {1,3,-5},
};
int total = Sum(arr);
Console.WriteLine();
Console.ReadKey();
}
它仍然无法正常工作。错误如下:
另一个SqlParameterCollection已经包含了SqlParameter。
这是我的问题还是EF的?
答案 0 :(得分:0)
如果您使用的是MSSQL - 您必须指定该函数的所有者,例如:
select [UserName], [TotalCost], [TotalHours]"
+ " FROM dbo.[RetrieveLabors](1, 1)
答案 1 :(得分:0)
The SqlParameter is already contained by another SqlParameterCollection.
和
Value = parameters.FirstOrDefault(x => x.Name == "CultureId").Value ?? DBNull.Value
向我建议你不恰当地重复使用'参数'集合。您应该做的是在执行时创建一个新的SqlParameter;更喜欢;
var existingCultureParameter = parameters.FirstOrDefault(x => x.Name == "CultureId");
SqlParameter newCultureParameter;
if (existingCultureParameter != null) {
newCultureParameter = new SqlParameter("CultureId", existingCultureParameter.Value);
} else {
newCultureParameter = new SqlParameter("CultureId", DbNull.Value);
}
大致相似的东西。您只是想避免在不同的查询中重复使用相同的参数。在您的代码中,解决方案可能更优雅。