Linq-to-SQL使用返回未命名列的存储过程强制转换异常

时间:2011-07-27 20:01:37

标签: sql sql-server linq-to-sql stored-procedures

我不拥有SP,但它返回的数据集的列名为:

FileID, SomethingNormal, Foo, Bar, SUM(bleh)

SUM(bleh)未命名。我使用VS2010中的dbml工具添加存储过程,它将SUM(bleh)检测为Column1,并为其提供一个int类型,听起来不错。

然而,当试图运行时,它试图获取IEnumerable的那一刻,它会因错误而中断:

  

指定的演员表无效。

     

未处理的异常:System.InvalidCastException:指定的强制转换是   无效。在System.Data.SqlClient.SqlBuffer.get_Int32()处   System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)at   Read_RejectedRecordsHourlyBySubscriptionResult(ObjectMaterializer 1 ) at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader 2.MoveNext()

当我尝试迭代或手动获取枚举时,就会发生这种情况。

在开发环境中我做了SUM(bleh) as TotalBleh(请放心所有这些名字都是假的> _>)而且我对我所做的事情没有任何疑问。

我应该知道什么?谢谢!

编辑:

这似乎是Linq-to-SQL的一个错误。奇怪的是,错误报告说它支持-ONE-匿名列(尽管不多),在这种情况下只有一个。

我会用基本的SqlCommand和东西来做。对商品来说太多了。

0 个答案:

没有答案