2010-04-21 70 views
4

使用Linq調用傳遞單個字符串的存儲過程,該存儲過程返回一個包含字符串和int的數據集行。Linq指定的類型「字符串」不是有效的提供程序類型

代碼:

PESQLDataContext pe = new PESQLDataContext(strConnStr); 
     pe.ObjectTrackingEnabled = false; 

gvUnitsPassed.DataSource = pe.PassedInspection(Line); 
gvUnitsPassed.DataBind(); 

pe.dispose(); 

當代碼運行的異常被調用如下: 唯一的例外是在IExecuteResult結果=語句拋出: 封閉在designer.cs文件我的結果類。

[Function(Name = "dbo.PassedInspection")] 
    public ISingleResult<PassedInspectionResult> PassedInspection([Parameter(Name = "Model", DbType = "VarChar(4)")] string model) 
    { 
     IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), model); 
     return ((ISingleResult<PassedInspectionResult>)(result.ReturnValue)); 
    } 

    public partial class PassedInspectionResult 
    { 

     private string _Date; 

     private int _Passed; 

     public PassedInspectionResult() 
     { 
     } 

     [Column(Storage = "_Date", DbType = "string NULL")] 
     public string Date 
     { 
      get 
      { 
       return this._Date; 
      } 
      set 
      { 
       if ((this._Date != value)) 
       { 
        this._Date = value; 
       } 
      } 
     } 

     [Column(Storage = "_Passed", DbType = "Int NULL")] 
     public int Passed 
     { 
      get 
      { 
       return this._Passed; 
      } 
      set 
      { 
       if ((this._Passed != value)) 
       { 
        this._Passed = value; 
       } 
      } 
     } 
    } 
} 

我有其他存儲過程具有類似的參數運行很好。

感謝

回答

7

我敢肯定,這是該行導致該問題:

[Column(Storage = "_Date", DbType = "string NULL")] 

明確了 「串」 位。它應該是該字段在存儲過程中定義的數據類型。例如varchar(...),ntext等。

+0

是的,謝謝你的問題。當我第一次將存儲過程添加到設計器時,我的參數爲char(4)。然後我收到上述錯誤。所以我將參數改爲varchar(4)。我必須轉置字符串參數。在測試中,我刪除了存儲過程,將參數替換爲char(4)並重新添加了proc。 它現在映射爲varchar(4),即使它是存儲過程中的char(4)。謝謝您的幫助。 – 2010-04-21 22:53:15

+0

感謝您將我的頭從靠牆的幾個骨頭中拯救出來。 – roufamatic 2010-11-30 00:27:47

相關問題