我是新主题,并尝试了解TableController
,ApiController
和ODataController
之间的差异,因此我可以决定使用哪一个。我将使用OData,我认为所有这三个控制器基类都提供OData功能。我也将使用Entity Framework Code First,所以我的默认选择似乎是TableController
。但我认为其中一种选择可能更符合我的情况。
使用ODataController
从构建EdmModel开始。虽然我查看了库源代码,但是我没有看到TableController
(和EntityDomainManager
)一起构建这样的静态模型。也许它没有"构建"一个模型,只是通过对实体DbContext
执行操作来简单地包装DbSet
的模型?
但是涉及导航属性的OData查询呢? TableController
/ EntityDomainManager
是否允许您将查询网址中的Order.Customer.Name
等属性路径链接在一起?路由是使用预定义的模型还是在运行中完成的?
答案 0 :(得分:1)
ApiController
是一个WebAPI - 没有特殊功能 - 只需直接GET / POST / PUT / DELETE /等。运行代码的功能。
ODataController
是ApiController
,它实现了数据访问的OData规范。
Azure移动应用TableController
是ApiController
,它实现了OData v3规范以及一些额外位,以便为兼容客户端(特别是iOS上的MobileServiceClient
提供离线同步功能, Android,.NET(Xamarin / UWP / WP8.1)和Cordova)这使得定义OData端点变得复杂。
在定义端点,如何表示查询等方面存在语义差异
就如何构建模型而言 - 它只是包装DbContext - 您的数据传输对象(DTO)必须从EntityData继承 - 这为模型提供了进行脱机同步所需的其他列(并注意{{1} } column必须是一个字符串)。因为Id
主要是一种移动功能,所以使用它们会有很多警告 - 例如,在离线世界中,关系尤其困难。 TableController
(仅限在线)支持关系 - ODataController
需要工作来支持他们。