private NavigationProperty CreateNavigationProperty( ClientModelProperty property, ClientModelMetadata modelMetadata) { var fkPropertyNames = modelMetadata.Associations[property.Name].ForeignKeyPropertyNames; return(new NavigationProperty { IsScalar = property.IsEntityType, EntityTypeName = GetBreezeTypeFullName(property.Type), NameOnServer = property.Name, AssociationName = GetAssociationName(modelMetadata.Type.Name, property.Type.Name, fkPropertyNames), InvForeignKeyNamesOnServer = property.IsEntityType ? null : fkPropertyNames, ForeignKeyNamesOnServer = property.IsEntityType ? fkPropertyNames : null, }); }
private void AddClientModelType(ClientModelMetadata modelMetadata, BreezeMetadata metadata) { var modelConfiguration = _breezeConfigurator.GetModelConfiguration(modelMetadata.Type); var entityType = GetOrCreateEntityType( modelMetadata.Type, modelConfiguration, metadata); entityType.IsUnmapped = true; foreach (var property in modelMetadata.Properties) { var memberConfiguration = modelConfiguration.GetMember(property.Name); if (memberConfiguration?.Ignored == true) { continue; } if (property.IsAssociationType) { entityType.NavigationProperties.Add(CreateNavigationProperty(property, modelMetadata)); continue; } if (property.IsComplexType) { AddComplexType(property.Type, metadata); } var dataProperty = CreateDataProperty(property, memberConfiguration, entityType); if (property.IsPartOfKey) { entityType.DataProperties.Insert(0, dataProperty); } else { entityType.DataProperties.Add(dataProperty); } } AddSyntheticMembers(entityType, modelConfiguration); AddSyntheticForeignKeyProperties(modelMetadata, entityType, modelConfiguration); }