Entity framework 4 从动态sql向实体框架返回变量列数的变通方法是什么?

Entity framework 4 从动态sql向实体框架返回变量列数的变通方法是什么?,entity-framework-4,return,Entity Framework 4,Return,所以我有一个存储过程,它有一些动态sql,它返回计算值。但返回的结果集可以是可变列 所以,现在的问题是我想把这个过程添加到实体框架4中,我认为它不会支持它。所以,现在一种方法是创建临时表或表值变量会有帮助,但我们不想这样做 你们有谁遇到过这个问题吗?在这种情况下有什么变通办法。我基本上希望从存储过程返回可变数量的列,并以某种方式将其映射到实体框架中的复杂类型?解决方法是,您必须修改SP以始终返回所有可能的列,并对不存在的任何列使用占位符。例如,如果SP在一个场景中返回col1、col2和col3

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

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


你们有谁遇到过这个问题吗?在这种情况下有什么变通办法。我基本上希望从存储过程返回可变数量的列,并以某种方式将其映射到实体框架中的复杂类型?

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

SELECT col1
     , null as col2
     , col3
 ...
关于EF,需要记住的是,当它生成复杂类型时,它基本上会调用您的SP,并为所有参数传递null。无论返回什么结果集,EF都将在创建复杂类型时使用

我们发现这是EF最令人沮丧的事情之一