2014-02-26 197 views
0

使用像命令我有這樣存儲過程

ALTER PROCEDURE dbo.sp_CheckGlobalizationResourceValue 
(
    @ResourceObject NVARCHAR(255), 
    @ResourceName NVARCHAR(128) 
    ) 

AS 

select count(*) from vpglobalizationresources 
     where ResourceObject = @ResourceObject and 
ResourceName like '%' + @ResourceName + '%' 

一個存儲過程,我使用LINQ to SQL類。我從上面顯示的.cs文件發送ResourceObject和ResourceName。它的returnValue始終爲0,爲什麼?存儲過程或cs類有什麼問題嗎?我在數據庫中運行了這個查詢,它在那裏工作得很好。

public static bool CheckGlobalizationResourceValue(string resourceObject, string resourceName) 
    { 
     try 
     { 
      using (var dataContext = new ResourceDBDataContext()) 
      { 
       resourceObject = resourceObject.Replace(ConfigurationHelper.MainDirectory + "\\", ""); 
       resourceObject = resourceObject.Replace("\\", "/"); 
       //resourceName = string.Format("'%{0}%'", resourceName); 

       var result = dataContext.sp_CheckGlobalizationResourceValue(resourceObject, resourceName); 
       if ((int)result.ReturnValue == 0) 
       { 
        return false; 
       } 
       else 
       { 
        return true; 
       } 
       //return (int)result.ReturnValue != 0; 
      } 
     } 
     catch (Exception exception) 
     { 
      throw new Exception("An error occured when retrieving data from database"); 
     } 
    } 
+0

而且我還從我的.dbml文件中刪除了存儲過程,並在更改後再次添加它。 –

+0

給我的表的數據和結構,以更好地理解... – pankeel

+0

這是很難說,因爲我不知道什麼'dataContext.sp_CheckGlobalizationResourceValue'在做什麼,我不太熟悉LINQ,但基於事實你使用'result.ReturnValue'我希望你引用了存儲過程返回的內容,而不是它的結果。默認情況下,存儲過程的返回值爲0,除非用'RETURN 1;'來覆蓋它。 – GarethD

回答

0

問題可能出在您的存儲過程中。我猜你需要使用like聲明ResourceObject過濾

select count(*) from vpglobalizationresources 
     where ResourceObject like @ResourceObject and 
ResourceName like '%' + @ResourceName + '%' 

它也可能是問題的@ResourceObject sleshes。試試執行Select參數的實際值,並檢查是否有一些數據返回或不返回

+0

我調試在.cs文件中並在數據庫中檢查它們的值。一切工作正常,如果我在數據庫中編寫該查詢並運行。所以resourceobject和resourcename都有正確的值。我認爲在調用它的.cs方面有問題。 –