OData元数据中<functionimport>的含义是什么?</functionimport>

时间:2015-03-10 03:19:40

标签: odata

在我浏览OData doc之后,我仍然不理解<FunctionImport>的含义。

  1. 用于什么? 有人说“除了CRUD操作之外,功能导入还用于在JPA实体上执行自定义操作。例如,考虑一种情况,您希望检查要在销售订单行项目上承诺的项目的可用性。”ATP check是一个自定义操作,可以在OData服务的模式中作为函数导入公开。“
  2. 但我认为上述要求也可以通过<Function>来实现,对吗?

    1. <FunctionImport><Function>之间有什么区别?
    2. 我非常感谢任何人的帮助! 感谢

2 个答案:

答案 0 :(得分:6)

OData中有三种类型的功能:

  1. 绑定到某些内容的函数(例如实体)。例子是 GET http://host/service/Products(1)/Namespace.GetCategories() 此类函数使用<function>元素并将isBound属性设置为true在元数据中定义。
  2. 未绑定的功能。它们通常用于查询。例如。 GET http://host/service/Products?$filter(Name eq Namespace.GetTheLongestProductName()) 使用<function>元素并将isBound属性设置为false
  3. 在元数据中定义此类函数
  4. 功能导入。它们是可以在服务根目录中调用的函数。例如。 GET http://host/service/GetMostExpensiveProduct() 它们的概念与程序语言中静态函数的概念有点类似,它们使用<functionimport>元素在元数据中定义。
  5. 类似的区别也适用于<action><actionimport>

答案 1 :(得分:3)

好的,我自己得到了答案。 <OData Version 4.0 Part 1: Protocol Plus Errata 02>: 操作允许在数据模型的某些部分上执行自定义逻辑。功能是没有副作用并且可以支持进一步组合的操作,例如,具有附加的过滤操作,功能或动作。操作是允许副作用(例如数据修改)的操作,并且不能进一步组合以避免非确定性行为。操作和函数要么绑定到某个类型,要么将它们作为该类型实例的成员调用,要么不绑定,在这种情况下,它们将被称为静态操作。操作导入和函数导入允许从服务根调用未绑定的操作和函数。