【问题标题】:LinqToSql giving 'Specified cast is not valid'LinqToSql 给出“指定的演员表无效”
【发布时间】:2009-10-22 18:10:05
【问题描述】:

我正在通过 L2S 运行一个存储过程,它返回“指定的转换无效”。存储的过程在手动运行时返回数据,当我通过它时,一切都很好,直到它尝试在“foreach(var row in result)”中创建行对象。

var q = new db();
var result = q.GetNearbyLocations(latitude, longitude,searchDistance);
foreach (var row in result)
   {
      var c = new Clinic()
                {
                   Name = row.CLINIC_NAME.Trim(),
                   Address1 = row.DRADR1.Trim()...

想法?

【问题讨论】:

标签: c# .net linq-to-sql


【解决方案1】:

这通常是由数据类型不匹配引起的,例如如果存储过程返回一个 int 并且映射到一个字符串,或者如果存储过程返回一个 varchar(1) 并且映射到一个 System.Char。

【讨论】:

  • sproc 动态创建一个字符串变量并执行它。 Linq 不喜欢这样。为了让 Linq 正确读取返回类型,我必须将其注释掉并放入等效的 sql 语句。不知何故,这并没有像在 Designer.cs 中那样正确发生,返回类型是一个 int,而不是一个记录集。我更改了存储过程,重新导入并将存储过程更改回执行字符串变量。现在一切都很幸福。谢谢大家!
【解决方案2】:

在执行foreach 语句之前,您的 sporc 不会真正被调用。因此,请确保 LINQ to SQL 可以正确地将存储过程返回的数据映射到您的对象。

【讨论】:

    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    相关资源
    最近更新 更多