C# 向OData元数据中的EntityTypes或属性添加属性

C# 向OData元数据中的EntityTypes或属性添加属性,c#,asp.net-web-api2,odata,C#,Asp.net Web Api2,Odata,我有一个使用OData的简单WebAPI2服务(Microsoft.AspNet.OData v5.9.1、Microsoft.AspNet.WebApi v5.2.3)。我从api/$metadata链接获得以下元数据文档 <edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0"> <edmx:DataServices> <Schema xmlns

我有一个使用OData的简单WebAPI2服务(Microsoft.AspNet.OData v5.9.1、Microsoft.AspNet.WebApi v5.2.3)。我从api/$metadata链接获得以下元数据文档

<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
   <edmx:DataServices>
      <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Global.Model">
         <EntityType Name="Account">
            <Key>
               <PropertyRef Name="Id" />
            </Key>
            <Property Name="Id" Type="Edm.String" Nullable="false" />
            <Property Name="ExtId" Type="Edm.String" />
            <Property Name="CustomerId" Type="Edm.String" />
            <Property Name="DivisionId" Type="Edm.String" />
            <Property Name="Default" Type="Edm.Boolean" Nullable="false" />
            <Property Name="Status" Type="Edm.Boolean" Nullable="false" />
            <NavigationProperty Name="Customer" Type="Global.Model.Customer">
               <ReferentialConstraint Property="CustomerId" ReferencedProperty="Id" />
            </NavigationProperty>
         </EntityType>
      </Schema>
   </edmx:DataServices>
</edmx:Edmx>

我想修改此文档以向客户端返回一些自定义属性。关于这个问题,我找不到合适的示例或教程

我的问题是,

1) 甚至可以像下面这样修改元数据

     <EntityType Name="Account" CustomAttribute="CustomValue">
        <Property Name="Id" Type="Edm.String" Nullable="false" MaxLength="3" DisplayName="No" />

2) 如果我使用Entity Framework Database First方法创建实体,我可以使用列长度、精度和比例值来指定属性吗

到目前为止我所发现的

1) 封闭的小田。这个问题似乎和我的有关,但我在任何地方都找不到SetNamespacePrefixMappings()函数或类似的函数。此函数来自Microsoft.Data.Edm,但我的项目有Microsoft.OData.Edm v6.15.0参考


2) 在odata.org上发布一篇关于词汇表的帖子,以及一篇关于词汇表的文章。这可能是答案,但我不知道如何使用它们。使用此示例,可以向元数据添加注释,但这是有限的。不完全符合我的要求。

关于问题1,似乎很难修改此问题,您只能将其改为:

new EdmBinaryTypeReference(
       (IEdmPrimitiveType)primitiveTypeReference.Definition,
       primitiveTypeReference.IsNullable,
       false,
       maxLength);
关于问题2,此文档可帮助您使用该功能: