2010-04-21 71 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

相关问题