使用 OData 创建所需的导航 属性
Required navigation property with OData create
使用 OData,我们可以将结构 属性 的 IsNullable
值设置为 false
,表示需要 属性。
是否可以为导航做类似的事情属性?
我在 EdmNavigationPropertyInfo
上找到了 TargetMultiplicity
属性,可以将其设置为 EdmMultiplicity.One
等值。我假设这会使它成为必需的(并且可能在幕后做)但元数据中似乎没有任何内容表明它不可为空,因此消费者不会知道它是必需的。
我在运行时从数据库构建我的元数据和对象,而不是使用具体类型。
你的问题:
是否可以为导航做类似的事情属性?
答案绝对是.
我从以下几个方面来说明:
- 来自OData v4 CSDL spec,它说:
edm:NavigationProperty 元素可以包含 Nullable 属性,其布尔值指定导航 属性 是否需要导航目标。 ....
Multiplicity 是 OData V3 规范中的概念。您可以从 here 中找到 10.2.3 edm:Multiplicity 属性 的定义。因为OData V4的实现是从OData V3的库迁移过来的。因此,相同的定义在 OData V4 库中被重用(未更改)。但是,它应该从 OData V4 库中删除。
从OData v4 lib implementation中可以找到如下映射:
a) EdmMultiplicity.ZeroOrOne (IsNullable = true)
b) EdmMultiplicity.One (IsNullable = false)
c) EdmMultiplicity.Many(表示集合,而集合始终不可为空)
所以,我说是。
让我举个例子:
如果您尝试 OData 示例服务:http://services.odata.org/v4/TrippinService/$metadata,您可以找到导航 属性 的 Nullable 属性。
--
<Property Name="FlightNumber" Nullable="false" Type="Edm.String"/>
<NavigationProperty Name="From" Nullable="false" Type="Microsoft.OData.SampleService.Models.TripPin.Airport"/>
<NavigationProperty Name="To" Nullable="false" Type="Microsoft.OData.SampleService.Models.TripPin.Airport"/>
<NavigationProperty Name="Airline" Nullable="false" Type="Microsoft.OData.SampleService.Models.TripPin.Airline"/>
</EntityType>
希望对您有所帮助。谢谢。
使用 OData,我们可以将结构 属性 的 IsNullable
值设置为 false
,表示需要 属性。
是否可以为导航做类似的事情属性?
我在 EdmNavigationPropertyInfo
上找到了 TargetMultiplicity
属性,可以将其设置为 EdmMultiplicity.One
等值。我假设这会使它成为必需的(并且可能在幕后做)但元数据中似乎没有任何内容表明它不可为空,因此消费者不会知道它是必需的。
我在运行时从数据库构建我的元数据和对象,而不是使用具体类型。
你的问题:
是否可以为导航做类似的事情属性?
答案绝对是.
我从以下几个方面来说明:
- 来自OData v4 CSDL spec,它说:
edm:NavigationProperty 元素可以包含 Nullable 属性,其布尔值指定导航 属性 是否需要导航目标。 ....
Multiplicity 是 OData V3 规范中的概念。您可以从 here 中找到 10.2.3 edm:Multiplicity 属性 的定义。因为OData V4的实现是从OData V3的库迁移过来的。因此,相同的定义在 OData V4 库中被重用(未更改)。但是,它应该从 OData V4 库中删除。
从OData v4 lib implementation中可以找到如下映射:
a) EdmMultiplicity.ZeroOrOne (IsNullable = true)
b) EdmMultiplicity.One (IsNullable = false)
c) EdmMultiplicity.Many(表示集合,而集合始终不可为空)
所以,我说是。
让我举个例子: 如果您尝试 OData 示例服务:http://services.odata.org/v4/TrippinService/$metadata,您可以找到导航 属性 的 Nullable 属性。
--
<Property Name="FlightNumber" Nullable="false" Type="Edm.String"/>
<NavigationProperty Name="From" Nullable="false" Type="Microsoft.OData.SampleService.Models.TripPin.Airport"/>
<NavigationProperty Name="To" Nullable="false" Type="Microsoft.OData.SampleService.Models.TripPin.Airport"/>
<NavigationProperty Name="Airline" Nullable="false" Type="Microsoft.OData.SampleService.Models.TripPin.Airline"/>
</EntityType>
希望对您有所帮助。谢谢。