public void ComplexType_ThisAndBaseAndDerivedTypes_Works() { // Arrange ODataModelBuilder builder = GetMockVehicleModel(); ComplexTypeConfiguration address = builder.StructuralTypes .OfType <ComplexTypeConfiguration>().Single(e => e.Name == "Address"); // Act & Assert Assert.Equal( new[] { "Address", "CarAddress", "MotorcycleAddress", "SportbikeAddress" }.OrderBy(name => name), builder.ThisAndBaseAndDerivedTypes(address).Select(e => e.Name).OrderBy(name => name)); }
public void EntityType_ThisAndBaseAndDerivedTypes_Works() { // Arrange ODataModelBuilder builder = GetMockVehicleModel(); EntityTypeConfiguration vehicle = builder.StructuralTypes .OfType <EntityTypeConfiguration>().Single(e => e.Name == "vehicle"); // Act & Assert Assert.Equal( new[] { "car", "motorcycle", "sportbike", "vehicle" }.OrderBy(e => e), builder.ThisAndBaseAndDerivedTypes(vehicle).Select(e => e.Name).OrderBy(name => name)); }
public void Apply(INavigationSourceConfiguration configuration, ODataModelBuilder model) { foreach (EntityTypeConfiguration entity in model.ThisAndBaseAndDerivedTypes(configuration.EntityType)) { foreach (NavigationPropertyConfiguration navigationProperty in entity.NavigationProperties) { NavigationSourceConfiguration targetNavigationSource = GetTargetNavigationSource(navigationProperty, model); if (targetNavigationSource != null) { configuration.AddBinding(navigationProperty, targetNavigationSource); } } } }
public void Apply(EntitySetConfiguration configuration, ODataModelBuilder model) { foreach (EntityTypeConfiguration entity in model.ThisAndBaseAndDerivedTypes(configuration.EntityType)) { foreach (NavigationPropertyConfiguration navigationProperty in entity.NavigationProperties) { EntitySetConfiguration targetEntitySet = GetTargetEntitySet(navigationProperty, model); if (targetEntitySet != null) { configuration.AddBinding(navigationProperty, targetEntitySet); } } } }
private static void AddNavigationBindings(NavigationSourceConfiguration configuration, EdmNavigationSource navigationSource, NavigationSourceLinkBuilderAnnotation linkBuilder, ODataModelBuilder builder, Dictionary<Type, IEdmType> edmTypeMap, Dictionary<string, EdmNavigationSource> edmNavigationSourceMap) { foreach (EntityTypeConfiguration entityType in builder.ThisAndBaseAndDerivedTypes(configuration.EntityType)) { foreach (NavigationPropertyConfiguration navigationProperty in entityType.NavigationProperties) { NavigationPropertyBindingConfiguration binding = configuration.FindBinding(navigationProperty); bool isContained = navigationProperty.ContainsTarget; if (binding != null || isContained) { EdmEntityType edmEntityType = edmTypeMap[entityType.ClrType] as EdmEntityType; IEdmNavigationProperty edmNavigationProperty = edmEntityType.NavigationProperties() .Single(np => np.Name == navigationProperty.Name); if (!isContained) { navigationSource.AddNavigationTarget( edmNavigationProperty, edmNavigationSourceMap[binding.TargetNavigationSource.Name]); } NavigationLinkBuilder linkBuilderFunc = configuration.GetNavigationPropertyLink(navigationProperty); if (linkBuilderFunc != null) { linkBuilder.AddNavigationPropertyLinkBuilder(edmNavigationProperty, linkBuilderFunc); } } } } }
private static void AddNavigationBindings(EntitySetConfiguration configuration, EdmEntitySet entitySet, EntitySetLinkBuilderAnnotation linkBuilder, ODataModelBuilder builder, Dictionary<Type, IEdmStructuredType> edmTypeMap, Dictionary<string, EdmEntitySet> edmEntitySetMap) { foreach (EntityTypeConfiguration entity in builder.ThisAndBaseAndDerivedTypes(configuration.EntityType)) { foreach (NavigationPropertyConfiguration navigation in entity.NavigationProperties) { NavigationPropertyBinding binding = configuration.FindBinding(navigation); if (binding != null) { EdmEntityType edmEntityType = edmTypeMap[entity.ClrType] as EdmEntityType; IEdmNavigationProperty edmNavigationProperty = edmEntityType.NavigationProperties().Single(np => np.Name == navigation.Name); entitySet.AddNavigationTarget(edmNavigationProperty, edmEntitySetMap[binding.EntitySet.Name]); Func<EntityInstanceContext, IEdmNavigationProperty, Uri> linkBuilderFunc = configuration.GetNavigationPropertyLink(navigation); if (linkBuilderFunc != null) { linkBuilder.AddNavigationPropertyLinkBuilder(edmNavigationProperty, linkBuilderFunc); } } } } }