如何在OData V3元数据中定义操作?

时间:2017-05-27 14:48:02

标签: odata odata-v3

您好我为Odata创建了一个代码生成工具,到目前为止,odata v4实现起来非常简单。

关于odata V3,我一直遇到元数据问题,因为我不知道到目前为止定义了哪些动作我只能看到元数据上的FunctionImport而不是动作,FunctionImport等同于OData的动作V3?如果没有,你能指出动作所在的元数据的哪个节点? 感谢

1 个答案:

答案 0 :(得分:1)

操作可以绑定或解除绑定,可以按如下方式添加到元数据(EDM)中:

builder.Entity<entityname>.Action("actionname").Parameter<type>("paramtername").Returns<type>();

这里,builder可以是ODataBuilder或ConventionalOdataBuilder。 如果要将操作解除绑定,可以删除实体并直接将其添加到构建器。 如果您希望直接将操作添加到IEdmModel,可以将操作添加为模式元素。

来源:https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/odata-v3/odata-actions

编辑:操作在元数据中定义如下:

<Schema Namespace="Default" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
<EntityContainer Name="Container" m:IsDefaultEntityContainer="true">
 <EntitySet Name="Movies" EntityType="ODataActionsSample.Models.Movie" />
  <FunctionImport Name="SetDueDate" ReturnType="ODataActionsSample.Models.Movie" IsBindable="true" EntitySet="Movies" m:IsAlwaysBindable="true">                    
    <Parameter Name="bindingParameter" Type="ODataActionsSample.Models.Movie" />                    
    <Parameter Name="DueDate" Type="Edm.DateTime" Nullable="false" />       
  </FunctionImport>
  <FunctionImport Name="CreateMovie" ReturnType="ODataActionsSample.Models.Movie" EntitySet="Movies">
    <Parameter Name="Title" Type="Edm.String" FixedLength="false" Unicode="false" />
  </FunctionImport>
</EntityContainer>