使用OData,我们可以将结构属性的IsNullable
值设置为false
,以表示需要属性。
是否可以为导航属性执行类似的操作?
我在TargetMultiplicity
上找到EdmNavigationPropertyInfo
属性,可以将其设置为EdmMultiplicity.One
之类的值。我认为这会使它成为必需(并且可能在引擎盖下),但元数据中似乎没有任何东西表明它不可为空,因此消费者不会知道它是必需的。
我在运行时从数据库构建元数据和对象,而不是使用具体类型。
答案 0 :(得分:1)
对于你的问题:
答案绝对是是。
让我说明以下几个方面:
edm:NavigationProperty元素可以包含Nullable属性,其布尔值指定导航属性是否需要导航目标。 ....
多重性是OData V3规范中的概念。你可以从here找到 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>
希望它可以帮到你。感谢。