Linq to SQL with Sproc和Variable Columns?

时间:2011-05-26 03:02:48

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

我有一个至少返回4列的sproc,然后返回n列(它是Pivot的结果)。

我无法创建一个快速类型来声明要与Linqtosql一起使用的结果集形状,因为我实际上并不知道它的形状是什么。

由于Linqtosql是我的DAL,我想尽可能坚持下去 - 我不想回到无类型的DataSet,是吗?

如何让LinqToSql返回带有可变数量的属性/列的sproc结果?

感谢。

1 个答案:

答案 0 :(得分:2)

LINQ-to-SQL需要将数据库对象映射到具体类型。所以,简而言之,你不能这样做。

有解决方法。我希望最好的结果是将n列映射到每个数据对象内的集合。

如果您可以将数据库模式更改为使用父子视图模式而不是单个动态sproc,则LINQ-to-SQL将能够映射此模式。例如,您在“父”视图中有前4列,现有proc中的每个后续列都将成为“子”视图中需要引用父视图的行。

另一种选择 - 更简单但更脏 - 将返回包含CSV格式(或其他分隔符)的当前n列的单个列。然后,您将此单个值解析为集合。丑陋而简单。