public IEntityTypeBuilder Initialize(IBindableModelBuilder modelBuilder, IEntityTypeBuilder publicEntityType) { var valueRuleBuilder = modelBuilder.CreateEntityTypeBuilder(FactonModelKeywords.ValueRuleEntityTypeName).WithParentType(publicEntityType); var valueRuleContainerBuilder = modelBuilder.CreateEntityTypeBuilder(FactonModelKeywords.ValueRuleContainerTypeName); publicEntityType.KeyProperties.ForEach(keyProperty => valueRuleContainerBuilder.WithKeyProperty(keyProperty)); foreach (var valueProperty in this.GetDimensionDependingProperties()) { var valueRuleProperty = valueRuleContainerBuilder.CreateContainedNavigationProperty(valueRuleBuilder, valueProperty) .WithMultiplicity(EdmMultiplicity.One, EdmMultiplicity.Many) .WithSupportedOperations(Operation.Get | Operation.Post | Operation.Patch); var binding = new ConcreteValueRuleContainerNavigationPropertyBinding( this.valueRuleService, this.valueRuleMetadataService, valueProperty); modelBuilder .WithBinding(valueRuleProperty, binding) .WithOptionalDependency(valueRuleProperty, publicEntityType.KeyProperties.First()); } AddContainerNavigationProperty(modelBuilder, publicEntityType, valueRuleContainerBuilder); return(valueRuleContainerBuilder); }
public IEntityTypeBuilder Initialize(SignatureTypeConfiguration config, IBindableModelBuilder modelBuilder, IEntityTypeBuilder publicEntityType) { var typeBuilder = modelBuilder.CreateEntityTypeBuilder(config.SignatureType) .WithParentType(publicEntityType) .WithStructuralProperty(this.quantityTypeProperty); foreach (var signature in this.signatureSetInitializer.GetRelevantSignaturesByType(config.SignatureType)) { var setBuilder = this.signatureSetInitializer.InitializeSet( modelBuilder, typeBuilder, signature, config.RelevantEntityTypes, "ResourceMasterdata"); IEntitySetBinding existingBinding; if (!modelBuilder.TryGetBinding(setBuilder, out existingBinding)) { throw new InvalidOperationException("No existing bind found for resource entity set."); } modelBuilder .WithBinding(setBuilder, new ResourceEntitySetBinding(this.resourceService, signature, existingBinding)) .WithDependency(setBuilder, this.quantityTypeProperty) .WithOptionalDependency(setBuilder, publicEntityType.KeyProperties.First()); } return(typeBuilder); }
public void InitializeVersionsNavigationProperty(IBindableModelBuilder modelBuilder, IEntityTypeBuilder sourceTypeBuilder, IEntityTypeBuilder versionInfoTypeBuilder) { modelBuilder.WithBinding( sourceTypeBuilder.CreateContainedNavigationProperty(versionInfoTypeBuilder, FactonModelKeywords.VersionInfoNavigationPropertyName) .WithMultiplicity(EdmMultiplicity.One, EdmMultiplicity.Many) .WithSupportedOperations(Operation.Get | Operation.Post), new VersionInfoNavigationPropertyBinding(this.factonQueryService, this.queryBuilderFactory)); }
private static void AddContainerNavigationProperty( IBindableModelBuilder modelBuilder, IEntityTypeBuilder publicEntityType, IEntityTypeBuilder containerEntityType) { modelBuilder.WithBinding( publicEntityType.CreateContainedNavigationProperty(containerEntityType, FactonModelKeywords.ValueRuleContainerNavigationPropertyName) .WithMultiplicity(EdmMultiplicity.One, EdmMultiplicity.One) .WithSupportedOperations(Operation.Get), new VirtualValueRuleContainerNavigationPropertyBinding()); }
private static void RegisterVersionedEntityNavigationProperty( IBindableModelBuilder modelBuilder, IEntityTypeBuilder versionInfoTypeBuilder, IEntityTypeBuilder publicEntityTypeBuilder) { modelBuilder.WithBinding( versionInfoTypeBuilder.CreateContainedNavigationProperty( publicEntityTypeBuilder, FactonModelKeywords.VersionedEntityNavigationPropertyName) .WithMultiplicity(EdmMultiplicity.One, EdmMultiplicity.One) .WithSupportedOperations(Operation.Get), new VersionedEntityNavigationPropertyBinding()); }
public IEntitySetBuilder InitializeSet( IBindableModelBuilder modelBuilder, IEntityTypeBuilder entityTypeBuilder, ISignature signature, IEnumerable <string> entityTypes, string space) { var entitySetBuilder = modelBuilder.CreateEntitySetBuilder(this.GetSetName(signature), entityTypeBuilder) .WithSupportedOperations(Operation.Get | Operation.Post | Operation.Patch); modelBuilder.WithBinding(entitySetBuilder, this.CreateEntitySetBinding(signature, entityTypes, space)); return(entitySetBuilder); }
private void AddTreePropertiesToPublicEntityType( ISignature treeSignature, IBindableModelBuilder modelBuilder, IEntityTypeBuilder dataTreeType, IEntityTypeBuilder publicEntityType) { foreach (var property in this.propertyService.GetSelectionTreePropertiesByTreeSignature(treeSignature)) { modelBuilder.WithBinding( publicEntityType.CreateUncontainedNavigationProperty(dataTreeType, property) .WithMultiplicity(EdmMultiplicity.One, EdmMultiplicity.One) .WithSupportedOperations(Operation.Get), new SelectionTreeValueNavigationPropertyBinding(property)); } foreach (var property in this.propertyService.GetSelectionTreeValueListPropertiesByTreeSignature(treeSignature)) { modelBuilder.WithBinding( publicEntityType.CreateUncontainedNavigationProperty(dataTreeType, property) .WithMultiplicity(EdmMultiplicity.One, EdmMultiplicity.Many) .WithSupportedOperations(Operation.Get), new SelectionTreeValueListValueNavigationPropertyBinding(property)); } }
public IEntityTypeBuilder Initialize( SignatureTypeConfiguration config, IBindableModelBuilder modelBuilder, IEntityTypeBuilder publicEntityType) { var dataTreeTypeBuilder = modelBuilder.CreateEntityTypeBuilder(config.SignatureType).WithParentType(publicEntityType); var parentProperty = dataTreeTypeBuilder.CreateUncontainedNavigationProperty(dataTreeTypeBuilder, FactonModelKeywords.TreeNodeParentNavigationPropertyName) .WithMultiplicity(EdmMultiplicity.Many, EdmMultiplicity.One) .WithSupportedOperations(Operation.Get); modelBuilder.WithBinding(parentProperty, new TreeNodeParentNavigationPropertyBinding()); foreach (var signature in this.signatureSetInitializer.GetRelevantSignaturesByType(config.SignatureType)) { var setBuilder = this.signatureSetInitializer.InitializeSet( modelBuilder, dataTreeTypeBuilder, signature, config.RelevantEntityTypes, this.space) .WithUncontainedNavigationPropertySelfTarget(parentProperty); IEntitySetBinding existingBinding; if (!modelBuilder.TryGetBinding(setBuilder, out existingBinding)) { throw new InvalidOperationException("No existing binding found for tree node entity set."); } modelBuilder .WithBinding(setBuilder, new TreeNodeEntitySetBinding(existingBinding)) .WithDependency(setBuilder, parentProperty) .WithOptionalDependency(setBuilder, publicEntityType.KeyProperties.First()); this.AddTreePropertiesToPublicEntityType(signature, modelBuilder, dataTreeTypeBuilder, publicEntityType); } return(dataTreeTypeBuilder); }
public IEntitySetBuilder InitializeSingleton( IBindableModelBuilder modelBuilder, IEntityTypeBuilder entityTypeBuilder, ISignature signature, IEnumerable <string> entityTypes, string space) { var singletonBuilder = modelBuilder.CreateEntitySetBuilder(this.GetSetName(signature), entityTypeBuilder) .AsSingleton() .WithSupportedOperations(Operation.Get | Operation.Patch); modelBuilder.WithBinding( singletonBuilder, new SignatureSingletonBinding(this.factonQueryService, this.queryBuilderFactory, signature, entityTypes, space)); return(singletonBuilder); }