コード例 #1
0
        public DbContextWriter(
            [NotNull] ModelUtilities modelUtilities,
            [NotNull] CSharpUtilities cSharpUtilities)
        {
            Check.NotNull(modelUtilities, nameof(modelUtilities));
            Check.NotNull(cSharpUtilities, nameof(cSharpUtilities));

            ModelUtilities = modelUtilities;
        }
コード例 #2
0
        public DbContextWriter(
            [NotNull] ModelUtilities modelUtilities,
            [NotNull] CSharpUtilities cSharpUtilities)
        {
            Check.NotNull(modelUtilities, nameof(modelUtilities));
            Check.NotNull(cSharpUtilities, nameof(cSharpUtilities));

            ModelUtilities = modelUtilities;
        }
コード例 #3
0
        public EntityTypeWriter(
            [NotNull] ModelUtilities modelUtilities,
            [NotNull] CSharpUtilities cSharpUtilities)
        {
            Check.NotNull(modelUtilities, nameof(modelUtilities));
            Check.NotNull(cSharpUtilities, nameof(cSharpUtilities));

            ModelUtilities  = modelUtilities;
            CSharpUtilities = cSharpUtilities;
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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; }");
            }
        }
コード例 #6
0
        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);
                }
            }
        }