从实体框架获取动态 SQL 结果
我在 WCF 中使用 EF 4。我在数据库端有一个 SP(执行动态 sql),它可以返回 n 个列,其中 n 不确定。因此,当我执行函数导入并指定返回类型为 none 时,它会将返回类型设置为 int。我看不到任何其他选择。我可以返回 xml 并这样做,但我不想处理 xml。我只希望它的返回类型为 List
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在这种情况下,您必须退回到 ADO.NET 并通过
SqlCommand
+SqlDataReader
执行存储过程。 EF 无法处理因返回列数而异的结果集。在 EF 中执行 SP 始终是强类型的,因此您必须能够将返回的记录映射到实体、复杂类型或自定义类型(EF 会将记录具体化为该类型的实例)。当您没有固定数量的返回列和固定的列名称时,这是不可能的。In such case you must fall back to ADO.NET and execute stored procedure by
SqlCommand
+SqlDataReader
. EF is not able to handle result set which vary by number of returned columns. Executing SPs in EF is always strongly typed so you must be able to map your returned record to an entity, a complex type or a custom type (EF will materialize record to instance of the type). It is not possible when you don't have fixed number of returned columns and fixed names of columns.