我有一个至少返回4列的sproc,然后返回n列(它是Pivot的结果)。
我无法创建一个快速类型来声明要与Linqtosql一起使用的结果集形状,因为我实际上并不知道它的形状是什么。
由于Linqtosql是我的DAL,我想尽可能坚持下去 - 我不想回到无类型的DataSet,是吗?
如何让LinqToSql返回带有可变数量的属性/列的sproc结果?
感谢。
答案 0 :(得分:2)
LINQ-to-SQL需要将数据库对象映射到具体类型。所以,简而言之,你不能这样做。
有解决方法。我希望最好的结果是将n列映射到每个数据对象内的集合。
如果您可以将数据库模式更改为使用父子视图模式而不是单个动态sproc,则LINQ-to-SQL将能够映射此模式。例如,您在“父”视图中有前4列,现有proc中的每个后续列都将成为“子”视图中需要引用父视图的行。
另一种选择 - 更简单但更脏 - 将返回包含CSV格式(或其他分隔符)的当前n列的单个列。然后,您将此单个值解析为集合。丑陋而简单。