EF - 执行具有动态生成字段的SQL查询/存储过程

时间:2011-06-14 19:40:32

标签: c# entity-framework entity-framework-4.1 ef-code-first

我在我的应用程序中使用EF代码第一种方法。我需要执行一个运行报告的查询,并返回带有动态生成字段的结果集。结果集中的字段可以根据条件而不同。是否可以使用代码第一种方法返回结果集,例如可能在DataSet中,或者是否有其他方法可以实现此目的?

感谢。

1 个答案:

答案 0 :(得分:2)

(未经测试)您可以尝试定义数据类型,该数据类型将包含查询可以返回的所有可能列的属性。它必须是平面类型,没有嵌套对象,并且属性必须与结果集中的列具有相同的名称。然后你可以使用

var data = context.Database.SqlQuery<YourType>("Your SQL Query or SP call");

如果您希望DataSet只返回列,则必须使用标准ADO.NET SqlDataAdapterSqlConnection / SqlCommand(或与您的数据库相关的版本)。 EF不喜欢不返回固定列集的本机查询。