IOrderedQueryable-指定的强制转换无效

时间:2014-06-10 06:50:42

标签: c# sql iqueryable

当我尝试迭代IOrderedQueryable对象时,我得到一个InvalidCast异常,如下所示。

感谢任何帮助:

        IOrderedQueryable<Result> rs =
                               from res in db.Results
                               orderby res.Id
                               select res;
            if (rs != null)
            {
                IEnumerator<Result> enumerator = rs.GetEnumerator();
                try
                {
                    while (enumerator.MoveNext())
                    {
                        Result r = enumerator.Current;
                        Console.WriteLine(r.BugId);
                    }
                }
             }

运行时错误:

 System.InvalidCastException was unhandled
  HResult=-2147467262
  Message=Specified cast is not valid.
  Source=System.Data
 StackTrace:
   at System.Data.SqlClient.SqlBuffer.get_Int32()
   at System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)
   at Read_Result(ObjectMaterializer`1 )
   at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()

2 个答案:

答案 0 :(得分:1)

问题似乎出现在r.BugId部分。

Result的代码似乎表明它是int,但数据库返回的值不是(可能是null?)。因此,您收到此错误消息。

检查BugId是否确实是数据库中的整数,如果没有,并且通过代码生成Result,请尝试重新生成。

答案 1 :(得分:1)

似乎在您的Results表格中,您的列在Int32级别上应该是DBContext,但其中的某些值无法转换为{{1} }。确保您的Int32与表定义相匹配。也许你忘了在一些表架构更改后更新它......