使用 OData,我们可以将IsNullable
结构属性的值设置false
为需要属性。
是否可以为导航属性做类似的事情?
我找到了可以将其设置为值的TargetMultiplicity
属性,EdmNavigationPropertyInfo
例如EdmMultiplicity.One
. 我认为这会使它成为必需的(并且可能在幕后进行),但元数据中似乎没有任何内容表明它不可为空,因此消费者不会知道它是必需的。
我在运行时从数据库构建我的元数据和对象,而不是使用具体类型。
使用 OData,我们可以将IsNullable
结构属性的值设置false
为需要属性。
是否可以为导航属性做类似的事情?
我找到了可以将其设置为值的TargetMultiplicity
属性,EdmNavigationPropertyInfo
例如EdmMultiplicity.One
. 我认为这会使它成为必需的(并且可能在幕后进行),但元数据中似乎没有任何内容表明它不可为空,因此消费者不会知道它是必需的。
我在运行时从数据库构建我的元数据和对象,而不是使用具体类型。
对于你的问题:
答案是肯定的。
让我从以下几个方面说明形式:
edm:NavigationProperty 元素可以包含 Nullable 属性,其布尔值指定导航属性是否需要导航目标。……
多重性是 OData V3 规范中的概念。您可以从此处找到定义10.2.3 The edm:Multiplicity Attribute。因为 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>
希望它可以帮助你。谢谢。