存储过程总是在实体框架中返回-1

时间:2016-05-31 07:06:38

标签: c# sql sql-server stored-procedures entity

在我的sql中,我有一个存储过程,它使用链接服务器从其他服务器查询数据。

Bellow是我的存储过程

   CREATE PROCEDURE [FIMS].[GetContactInfo]
   @ContactID nvarchar(MAX)
   AS
   BEGIN
   DECLARE @LinkServerName VARCHAR(25)
DECLARE @UserName VARCHAR(25)
DECLARE @Password VARCHAR(25)

SET @LinkServerName = 'myserverip'
SET @UserName = 'username'
SET @Password = 'password'

IF ((@LinkServerName IS NOT NULL) AND (@UserName IS NOT NULL) AND (@Password IS NOT NULL))
BEGIN 

IF NOT EXISTS (SELECT 1 FROM master.dbo.sysservers WHERE srvname = @LinkServerName)
    BEGIN
        exec sp_addlinkedserver @server=@LinkServerName;
        exec sp_addlinkedsrvlogin @rmtsrvname= @LinkServerName,@useself=false, @rmtuser=@UserName, @rmtpassword=@Password;
    END

    DECLARE
    @strSQL NVARCHAR(MAX)

SET @strSQL = 'SELECT 
                fcContact.Name as CompanyName, fcPhone.Area + fcPhone.Prefix + fcPhone.Trunk as ContactNumber
                FROM 
                '+ '[' + @LinkServerName + ']' + '.[MyDB].[AssContactPhone] fcAssContactPhone INNER JOIN
                '+ '[' + @LinkServerName + ']' + '.[MyDB].[Contact] fcContact ON fcAssContactPhone.ContactID = fcContact.ContactID INNER JOIN
                '+ '[' + @LinkServerName + ']' + '.[MyDB].[Phone] fcPhone ON fcAssContactPhone.PhoneID = fcPhone.PhoneID
                where fcContact.ContactID = '+ @ContactID +''
EXEC(@strSQL)   
END
END

我在我的实体框架中使用该存储过程,但它总是将结果返回为“-1”

如何在我的实体框架中使用此存储过程返回的结果?

1 个答案:

答案 0 :(得分:0)

我必须假设它是使用C#命令调用的,因为问题被标记为这样,在这种情况下,你可能会发现它不是SP那个&#39 ; s返回-1但方法本身。在没有看到代码的情况下,很难确切地说出原因,但这通常是因为调用SQL命令的方式而发生的。 -1可以简单地说是SQL命令正确执行的响应。如果要在C#中返回结果,则需要使用reader命令而不是执行。