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

本文关键字:sql 查询 存储过程 字段 执行 动态 EF- | 更新日期: 2023-09-27 17:59:04

我在应用程序中使用EF代码优先的方法。我需要执行一个查询,该查询运行一个报告并返回带有动态生成字段的结果集。结果集中的字段可能因条件而异。是否可以像在数据集中那样使用代码优先的方法返回结果集,或者是否有其他方法可以实现这一点?

谢谢。

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

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

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

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