我发现自己需要使用odata v4(Web Api 2实现)创建一个动作,该动作可以返回包含多个不同实体类型的列表,也可以返回一个包含多个实体类型的对象的动作。
但是,如果我创建一个返回列表的操作,则会收到一条错误消息,指示该列表中的所有项目必须为同一类型(或派生自同一类型)。现在,我假设该方法派生自在实体数据模型中注册的通用类型,因为它们均从对象继承。
如果我创建一个类型来嵌套要返回的各种实体类型,则返回的对象没有数据(我猜是因为内容是实体类型,它试图提供帮助并将其保留为导航属性之类的东西,但那不是我所需要的。)
当我在四处寻找试图在模型中注册动作的过程时,我遇到了$ all端点(在Web api 2实现中似乎不起作用,但是我的自定义内容可能会破坏它,因为好)http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part2-url-conventions/odata-v4.0-errata03-os-part2-url-conventions-complete.html#_Toc453752355 但是我不知道如何从一个动作中做类似的事情。
我希望它像
一样容易actionConfig.ReturnsCollectionOfTypelessGoo()
但如果有必要,我愿意跳篮球:)
答案 0 :(得分:0)
第一个想法是List<object>
,或者更好的new { data = new List<object>() }
,因为返回数组会引起问题。
更新: 如果所有方法都失败,您还可以将json作为字符串返回。
答案 1 :(得分:0)
考虑使用无类型的模型。 示例项目here