public DbContextWriter( [NotNull] ModelUtilities modelUtilities, [NotNull] CSharpUtilities cSharpUtilities) { Check.NotNull(modelUtilities, nameof(modelUtilities)); Check.NotNull(cSharpUtilities, nameof(cSharpUtilities)); ModelUtilities = modelUtilities; }
public DbContextWriter( [NotNull] ModelUtilities modelUtilities, [NotNull] CSharpUtilities cSharpUtilities) { Check.NotNull(modelUtilities, nameof(modelUtilities)); Check.NotNull(cSharpUtilities, nameof(cSharpUtilities)); ModelUtilities = modelUtilities; }
public EntityTypeWriter( [NotNull] ModelUtilities modelUtilities, [NotNull] CSharpUtilities cSharpUtilities) { Check.NotNull(modelUtilities, nameof(modelUtilities)); Check.NotNull(cSharpUtilities, nameof(cSharpUtilities)); ModelUtilities = modelUtilities; CSharpUtilities = cSharpUtilities; }
public ConfigurationFactory([NotNull] IRelationalAnnotationProvider extensionsProvider, [NotNull] CSharpUtilities cSharpUtilities, [NotNull] ModelUtilities modelUtilities) { Check.NotNull(extensionsProvider, nameof(extensionsProvider)); Check.NotNull(cSharpUtilities, nameof(cSharpUtilities)); Check.NotNull(modelUtilities, nameof(modelUtilities)); ExtensionsProvider = extensionsProvider; CSharpUtilities = cSharpUtilities; ModelUtilities = modelUtilities; }
public virtual void AddProperties() { foreach (var property in ModelUtilities.OrderedProperties(_entity.EntityType)) { PropertyConfiguration propertyConfiguration = _entity.FindPropertyConfiguration(property); if (propertyConfiguration != null) { AddAttributes(propertyConfiguration.AttributeConfigurations); } _sb.AppendLine("public " + CSharpUtilities.GetTypeName(property.ClrType) + " " + property.Name + " { get; set; }"); } }
protected virtual void VisitNavigationProperties([NotNull] ModelBuilder modelBuilder) { Check.NotNull(modelBuilder, nameof(modelBuilder)); // TODO perf cleanup can we do this in 1 loop instead of 2? var model = modelBuilder.Model; var modelUtilities = new ModelUtilities(); var entityTypeToExistingIdentifiers = new Dictionary<IEntityType, List<string>>(); foreach (var entityType in model.GetEntityTypes()) { var existingIdentifiers = new List<string>(); entityTypeToExistingIdentifiers.Add(entityType, existingIdentifiers); existingIdentifiers.Add(entityType.Name); existingIdentifiers.AddRange( modelUtilities.OrderedProperties(entityType).Select(p => p.Name)); } foreach (var entityType in model.GetEntityTypes()) { var dependentEndExistingIdentifiers = entityTypeToExistingIdentifiers[entityType]; foreach (var foreignKey in entityType.GetForeignKeys()) { // set up the name of the navigation property on the dependent end of the foreign key var dependentEndNavigationPropertyCandidateName = modelUtilities.GetDependentEndCandidateNavigationPropertyName(foreignKey); var dependentEndNavigationPropertyName = CSharpUtilities.Instance.GenerateCSharpIdentifier( dependentEndNavigationPropertyCandidateName, dependentEndExistingIdentifiers, NavigationUniquifier); foreignKey.Scaffolding().DependentEndNavigation = dependentEndNavigationPropertyName; dependentEndExistingIdentifiers.Add(dependentEndNavigationPropertyName); // set up the name of the navigation property on the principal end of the foreign key var principalEndExistingIdentifiers = entityTypeToExistingIdentifiers[foreignKey.PrincipalEntityType]; var principalEndNavigationPropertyCandidateName = foreignKey.IsSelfReferencing() ? string.Format( CultureInfo.CurrentCulture, SelfReferencingPrincipalEndNavigationNamePattern, dependentEndNavigationPropertyName) : modelUtilities.GetPrincipalEndCandidateNavigationPropertyName(foreignKey); var principalEndNavigationPropertyName = CSharpUtilities.Instance.GenerateCSharpIdentifier( principalEndNavigationPropertyCandidateName, principalEndExistingIdentifiers, NavigationUniquifier); foreignKey.Scaffolding().PrincipalEndNavigation = principalEndNavigationPropertyName; principalEndExistingIdentifiers.Add(principalEndNavigationPropertyName); } } }