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 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); }