LINQ to SQL DataContext“字符串必须只有一个字符长。”

时间:2014-02-17 19:41:29

标签: c# sql-server wcf linq-to-sql

我在Stored Procedure的{​​{1}}连接中使用了Web Service。当我手动执行我的存储过程时,我看到它返回了我需要的列,但是当我使用LINQ to SQL尝试使用Web Service时,我会抛出LINQ to SQL错误。

以下是更多详情:

"String must be exactly one character long."预计有四个Stored Procedureparameterschar(12)varchar(3)int

当我这样做时:varchar(3) output

我得到了正确的列(在SQL Server 2012中),但是当我通过以下代码从我的Web服务中调用它时:

exec spName '123456789012', '123', '1', ''

它抛出了需要字符串恰好是一个字符长的错误。

所以,我接到我的问题:为什么exec会工作,但是具有相同参数的Web Service调用却没有,我该如何解决?

1 个答案:

答案 0 :(得分:1)

在您的示例中,第三个参数在撇号中给出 - 就像它是varchar(而不是int)。在c#示例中,第三个参数有int类型。请查看您的存储过程定义和c#生成的类。也许第三个参数有类型混乱。 EXEC之所以有效,是因为SQL Server可以在INT和VARCHAR类型之间转换参数。

还使用SQL事件探查器来捕获SQL查询。我想LINQ用params而不是直接参数构建SQL查询。