我正在使用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作为字符串? 是否需要向模型添加属性,或者是否可以通过其他方式配置构建器?