【发布时间】:2012-09-05 16:41:16
【问题描述】:
在“web api”出现之前,必须执行JsonResult GetPersons(..) 类型的操作。现在,使用 web api,可以拥有List<Person> GetPersons(..)。
我认为这样做的重点是重新利用动作,即:从另一个动作调用 GetPersons(可能是ActionResult GetPersons(..))。
但在许多序列化问题之后,我发现这不是一个选项。比如对象里面有枚举这么简单,是不能序列化成json的。
所以我最终得到了许多 dynamic X(...) 返回匿名类型,我不能真正重用我的 API 的很多东西。有什么建议吗?
重复代码示例如下:
json:
from a in b select new { ... }
不是json
from a in b
另外,我在许多论坛上读到返回 EF 对象本身并不好,而这正是 web api 的动机(以及 [ScriptIgnore] 的存在)
问题:如何在 API 和普通控制器中重用查询?
【问题讨论】:
-
理由不是问题。
-
WebAPI 不会“激励”您使用 EF 或任何其他类型的实体。您看到的示例经常这样做,因为 MS 以这种方式显示它会更快,并且因为它们希望您对 EF 有一个硬依赖。但是,您不必返回实体模型。您可以返回 ViewModel、EditModel,甚至是专门的 API 特定模型。
标签: c# .net asp.net-mvc-4 asp.net-web-api