OData:如何将System.Uri转换为Edm.String?

时间:2019-12-18 10:44:12

标签: odata asp.net-core-3.0

我正在使用ASPNetCore构建OData Web API。 EdmModel的构建类似于

ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<MyType>("MyType");
edmModel = builder.GetEdmModel();

这是MyType

public class MyType
{
    [Key]
    public string Id { get; set; }

    [Required]
    public Uri Uri { get; set; }
}

这会生成这样的EdmModel

<Schema Namespace="Test" xmlns="http://docs.oasis-open.org/odata/ns/edm">
  <EntityType Name="MyType">
    <Key>
      <PropertyRef Name="Id" />
    </Key>
    <Property Name="Uri" Type="System.Uri" Nullable="false" />
  </EntityType>
</Schema>
<Schema Namespace="System" xmlns="http://docs.oasis-open.org/odata/ns/edm">
  <ComplexType Name="Uri">
    <Property Name="Segments" Type="Collection(Edm.String)" />
  </ComplexType>
</Schema>

当我查询OData控制器时,我会收到此响应

{
  "@odata.context": "https://localhost:44389/v3/$metadata#MyType/$entity",
  "Id": "ID-1234",
  "Uri": {
    "Segments": [
      "/",
      "path/",
      "to/",
      "document"
    ]
  }
}

那根本不是我想要的。 如何获取此完整的URI作为字符串? 是否需要向模型添加属性,或者是否可以通过其他方式配置构建器?

0 个答案:

没有答案