【发布时间】:2014-07-25 16:13:56
【问题描述】:
我有一个包含大约 200 个表的 EF 模型,其中 75 个我想通过 REST 在 MVC 应用程序中公开。我首先添加了一个 WCF 数据服务 (WCF-DS),将其指向 EF 上下文,然后,我在大约 2 分钟内将整个数据库映射到具有完整 OData 语法支持的 REST URI。
接下来我尝试使用 WebAPI 创建相同的 REST URI 空间。当我尝试添加 WebAPI OData 控制器时,它要求的第一件事是模型类,当我完成创建控制器(并将所有必需的 ODataConventionModelBuilder 代码复制到 WebApiConfig 中)时,我只有一个 REST 端点!我现在的印象是,WebAPI 不太适合用大量蛮力公开整个 EF 模型。
所以我的问题:
-
我是否错过了一种一举将一组 WebAPI 端点映射到 EF 模型的方法?
(可能是 T4 模板在我生成我的 EF 模型时构建所有 WebAPI 代码??)
-
是否有任何令人信服的理由考虑使用 WebAPI 与 WCF-DS 来公开大型 URI 域?
(有人说 WebAPI 的好处是可以对每个 MVC/HTTP 请求进行细粒度控制,但如果目标是符合 OData 规范,这似乎适得其反。我不确定我是否想要有 75 个控制器和 1000 行代码,它们会诱使我的开发同事改变一个实体的行为,从而导致与其他实体不同的行为。)
(对于诸如安全、缓存或性能限制等横切关注点,WCF-DS 似乎对 Interceptors 及其 DataServiceConfiguration 类具有足够的配置能力。WebAPI 的任何功能在这方面会做得更好吗?)
谢谢。
更新:我发现 Julie Lermon 的这篇文章有点帮助:http://msdn.microsoft.com/en-us/magazine/dn201742.aspx
【问题讨论】:
-
由于 WCF DS 已停止使用,因此这个问题更加相关。我正在考虑编写自己的 T4 模板来模仿 web api odata 教程,这些教程似乎希望用户手动为每个模型创建一个 api 控制器。我们的数据库还有 200 多张表!
标签: asp.net-mvc entity-framework asp.net-web-api wcf-data-services