返回变量从动态sql到实体框架的列数有哪些变通方法?

时间:2011-02-25 18:52:25

标签: entity-framework-4 return

所以我有一些存储过程,它有一些动态的sql并返回计算出的值。返回的结果集可以是可变列。

所以,现在的问题是我想将这个过程添加到实体框架4中,我不认为它会支持它。所以,现在一种方法是创建临时表或表值变量将是友好的帮助,但我们不想这样做。

有没有人遇到过这个问题?这种情况的解决方法是什么?我基本上想从存储过程中返回可变数量的列,并以某种方式将其映射到实体框架中的复杂类型?

1 个答案:

答案 0 :(得分:0)

解决方法是您必须修改SP以始终返回所有可能的列,并为任何不存在的列使用占位符。例如,如果您的SP在一个场景中返回col1,col2和col3,在另一个场景中返回col1,col2,col4和col5,那么您需要始终返回col1,col2,col3,col4和col5,并使用虚拟值(null或者为空字符串,例如)您没有值的列。 E.g。

SELECT col1
     , null as col2
     , col3
 ...

关于EF的要记住的是,当它生成复杂类型时,它基本上调用你的SP并为所有参数传递null。返回的结果集是EF在创建复杂类型时要使用的内容。

我们发现这是EF的一个令人沮丧的事情。