1

我有一个非常简单的存储过程,它返回 2 列、1 行数据。

SELECT client_id, client_code
FROM wv.client_identifiers
WHERE (client_code = @client_code) 
  AND (version = 0) 
  AND (facility_id = @facility_id) 
  AND (is_active = 1) 
  AND (client_version = 0)

此表不可能有重复项。在过去 2 年中,在我们的 Web 项目中测试此过程时,它按预期工作。在 SSMS 和 Visual Studio 服务器资源管理器中运行良好。当我们将它添加到 ADO.NET 实体框架中的 WCF 服务项目时,问题就出现了。

它看起来很好,可以很好地创建函数,可以很好地创建复杂类型等。我可以从 WPF 项目中很好地调用它,但是,如果完全正确,返回的数据并不一致。

例如,我有 3 行。

client_id client_code 
1001       1252
1002       6655
1003       123
1004       111
1005       5522

如果我通过带有参数的服务点击上述过程,它会返回错误的结果。

using(var context = new service.MyService())
{
   var Clients = context.GetClientIDFromClient_Code(facility_id, true, client_code)

   foreach(var client in Clients)
   {
     int ClientID = client.client_id;
   }
  • 如果我传入 5522 的参数值,我会得到空结果。
  • 如果我传入 123 的参数值,我会得到 111 的client_id 1004结果code
  • 如果我传入 1252 的参数值,我会得到client_id 1004111 的结果和代码。
  • 如果我传入任何以1开头的任何内容,然后是我得到相同结果的任何内容。
  • 如果我输入任何不以 1 开头但在数据库中并且应该返回的任何内容,我都会得到空值。

不确定为什么 WCF 会导致挂断。我可以将它放入 linq to sql 类数据库文件中,它工作正常。我尝试过多种不同的调用方式,尝试只返回单个列或单个值,我已经尝试了几乎所有的方法。不确定它是否在与此类似的所有程序上都这样做,但如果我不得不猜测它会是。

提前致谢

4

0 回答 0