TableController相当于EdmModel

时间:2016-05-25 23:30:57

标签: entity-framework azure odata azure-mobile-services

我是新主题,并尝试了解TableControllerApiControllerODataController之间的差异,因此我可以决定使用哪一个。我将使用OData,我认为所有这三个控制器基类都提供OData功能。我也将使用Entity Framework Code First,所以我的默认选择似乎是TableController。但我认为其中一种选择可能更符合我的情况。

使用ODataController从构建EdmModel开始。虽然我查看了库源代码,但是我没有看到TableController(和EntityDomainManager)一起构建这样的静态模型。也许它没有"构建"一个模型,只是通过对实体DbContext执行操作来简单地包装DbSet的模型?

但是涉及导航属性的OData查询呢? TableController / EntityDomainManager是否允许您将查询网址中的Order.Customer.Name等属性路径链接在一起?路由是使用预定义的模型还是在运行中完成的?

1 个答案:

答案 0 :(得分:1)

ApiController是一个WebAPI - 没有特殊功能 - 只需直接GET / POST / PUT / DELETE /等。运行代码的功能。

ODataControllerApiController,它实现了数据访问的OData规范。

Azure移动应用TableControllerApiController,它实现了OData v3规范以及一些额外位,以便为兼容客户端(特别是iOS上的MobileServiceClient提供离线同步功能, Android,.NET(Xamarin / UWP / WP8.1)和Cordova)这使得定义OData端点变得复杂。

在定义端点,如何表示查询等方面存在语义差异

就如何构建模型而言 - 它只是包装DbContext - 您的数据传输对象(DTO)必须从EntityData继承 - 这为模型提供了进行脱机同步所需的其他列(并注意{{1} } column必须是一个字符串)。因为Id主要是一种移动功能,所以使用它们会有很多警告 - 例如,在离线世界中,关系尤其困难。 TableController(仅限在线)支持关系 - ODataController需要工作来支持他们。