예제 #1
0
        /// <summary>
        /// Makes the plural.
        /// </summary>
        /// <param name="word">The word.</param>
        /// <returns></returns>
        public static string MakePlural(string word)
        {
            try
            {
                if (string.IsNullOrEmpty(word))
                {
                    return(string.Empty);
                }
                if (PluralizationService == null)
                {
                    return(word);
                }

                if (word.Contains('_'))
                {
                    return(MakePluralHelper(word, '_'));
                }
                if (word.Contains(' '))
                {
                    return(MakePluralHelper(word, ' '));
                }
                if (word.Contains('-'))
                {
                    return(MakePluralHelper(word, '-'));
                }

                return(PluralizationService.Pluralize(word));
            }
            catch (Exception)
            {
                return(word);
            }
        }
예제 #2
0
        public IConfiguration Discover(EntitySet entitySet, DbModel model)
        {
            Debug.Assert(entitySet != null, "entitySet is null.");
            Debug.Assert(model != null, "model is null.");

            var storeEntitySet = model.ConceptualToStoreMapping
                                 .EntitySetMappings.First(m => m.EntitySet == entitySet)
                                 .EntityTypeMappings.First()
                                 .Fragments.First()
                                 .StoreEntitySet;
            var tableName = storeEntitySet.GetStoreModelBuilderMetadataProperty("Name")
                            ?? storeEntitySet.Table
                            ?? storeEntitySet.Name;
            var schemaName = storeEntitySet.GetStoreModelBuilderMetadataProperty("Schema") ?? storeEntitySet.Schema;

            if (_pluralizationService.Pluralize(_code.Type(entitySet.ElementType)) == tableName &&
                (string.IsNullOrEmpty(schemaName) || schemaName == "dbo"))
            {
                // By convention
                return(null);
            }

            return(new TableConfiguration {
                Table = tableName, Schema = schemaName != "dbo" ? schemaName : null
            });
        }
예제 #3
0
        private static string GetTableName(Type xType, string xPrefix)
        {
            IPluralizationService pluralizationService = DbConfiguration.DependencyResolver.GetService <IPluralizationService>();
            string result = pluralizationService.Pluralize(xType.Name);

            return($"{xPrefix}_{result}");
        }
예제 #4
0
        public void Add(ObjectElement obj, IEnumerable <ColumnElement> columns)
        {
            var className    = SafeName(string.IsNullOrEmpty(obj.ClassName) ? obj.Name : obj.ClassName);
            var propertyName = SafeName(string.IsNullOrEmpty(obj.PropertyName) ? obj.Name : obj.PropertyName);

            if (IsPluralize)
            {
                className    = Pluralization.Singularize(className);
                propertyName = Pluralization.Pluralize(propertyName);
            }
            var objectGenerator = new ClassGenerator(obj)
            {
                ClassName    = className,
                PropertyName = propertyName
            };

            foreach (var column in columns)
            {
                var name = SafeName(string.IsNullOrEmpty(column.PropertyName) ? column.Name : column.PropertyName);
                if (objectGenerator.ClassName == name)
                {
                    name += CharIndex;
                }
                var memberGenerator = new MemberGenerator(column, name);
                objectGenerator.Members.Add(column.Name, memberGenerator);
            }
            Objects.Add(obj.Key, objectGenerator);
        }
예제 #5
0
 private static string GetNavigationPropertyName(IPluralizationService service, AssociationEndMember toEnd, string storeTableName)
 {
     return(service == null
                ? storeTableName
                : toEnd.RelationshipMultiplicity == RelationshipMultiplicity.Many
                      ? service.Pluralize(storeTableName)
                      : service.Singularize(storeTableName));
 }
예제 #6
0
        public MongoRepository(IRepositorySettings _settings, IPluralizationService _pluralizationService)
        {
            settings             = _settings;
            pluralizationService = _pluralizationService;

            conn                = _settings.GetClientConnection();
            db                  = settings.GetDatabase();
            collection          = db.GetCollection <T>(pluralizationService.Pluralize(typeof(T).Name));
            collectionQueryable = collection.AsQueryable();
        }
예제 #7
0
 /// <summary>
 /// Makes the plural.
 /// </summary>
 /// <param name="word">The word.</param>
 /// <returns></returns>
 public static string MakePlural(string word)
 {
     try
     {
         return((PluralizationService == null) ? word : PluralizationService.Pluralize(word));
     }
     catch (Exception)
     {
         return(word);
     }
 }
 private void ConfigureDerivedEntity <TEntity>(DbModelBuilder modelBuilder) where TEntity : TimestampedEntity
 {
     modelBuilder.Entity <TEntity>().HasKey(e => e.Id);
     modelBuilder.Entity <TEntity>().Property(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
     modelBuilder.Entity <TEntity>().HasRequired(e => e.Creator).WithMany().HasForeignKey(e => e.CreatorId);
     modelBuilder.Entity <TEntity>().HasOptional(e => e.Amender).WithMany().HasForeignKey(e => e.AmenderId);
     modelBuilder.Entity <TEntity>().Map(m =>
     {
         m.MapInheritedProperties();
         m.ToTable(_pluralizationService.Pluralize(typeof(TEntity).Name));
     });
 }
예제 #9
0
        static string GetName(
            Type type,
            IPluralizationService pluralizationService,
            IDictionary <string, string> explicitNames)
        {
            if (explicitNames.ContainsKey(type.Name))
            {
                return(explicitNames[type.Name]);
            }

            return(pluralizationService
                   .Pluralize(type.Name.TrimEnd("Data")));
        }
        /// <inheritdoc />
        public virtual void Apply(EntitySet item, DbModel model)
        {
            Check.NotNull(item, "item");
            Check.NotNull(model, "model");

            if (item.GetConfiguration() == null)
            {
                item.Name
                    = model.GetConceptualModel().GetEntitySets()
                      .Except(new[] { item })
                      .UniquifyName(_pluralizationService.Pluralize(item.Name));
            }
        }
예제 #11
0
        public void Apply(EntitySet edmDataModelItem, EdmModel model)
        {
            Check.NotNull(edmDataModelItem, "edmDataModelItem");
            Check.NotNull(model, "model");

            if (edmDataModelItem.GetConfiguration() == null)
            {
                edmDataModelItem.Name
                    = model.GetEntitySets()
                      .Except(new[] { edmDataModelItem })
                      .UniquifyName(_pluralizationService.Pluralize(edmDataModelItem.Name));
            }
        }
 public static string Pluralize(string word)
 {
     // if known plural, return unchanged
     if (KnownPlural.ContainsKey(word))
     {
         return(word);
     }
     // if in singular-to-plural, return plural
     return(SingularToPlural
            .TryGetValue(word, out var plural)
         ? plural
         : PluralizationService.Pluralize(word));
 }
        protected virtual string GetControllerName(ControllerModel controller)
        {
            if (controller.RouteValues.ContainsKey("controller"))
            {
                return(controller.RouteValues["controller"]);
            }

            var controllerName = pluralizationService.Pluralize(controller.ControllerName);

            if (aspNetCoreOptions.Routes.UseKebapCase)
            {
                return(controllerName.ToKebabCase());
            }
            ;

            return(controllerName);
        }
예제 #14
0
        /// <summary>
        /// This method first checks if the type has a [JsonObject] attribute. If so,
        /// it uses the attribute's Title. Otherwise it falls back to pluralizing the
        /// type's name using the given <see cref="IPluralizationService" /> and then
        /// dasherizing that value.
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public virtual string GetResourceTypeNameForType(Type type)
        {
            var jsonObjectAttribute = type.GetCustomAttributes().OfType <JsonObjectAttribute>().FirstOrDefault();

            string title = null;

            if (jsonObjectAttribute != null)
            {
                title = jsonObjectAttribute.Title;
            }

            if (string.IsNullOrEmpty(title))
            {
                title = GetNameForType(type);
            }

            return(_pluralizationService.Pluralize(title).Dasherize());
        }
        public void Apply(EntityType dbDataModelItem, EdmModel model)
        {
            Check.NotNull(dbDataModelItem, "dbDataModelItem");
            Check.NotNull(model, "model");

            _pluralizationService = DbConfiguration.GetService <IPluralizationService>();

            if (dbDataModelItem.GetTableName() == null)
            {
                var entitySet = model.GetEntitySet(dbDataModelItem);

                entitySet.Table
                    = model.GetEntitySets()
                      .Where(es => es.Schema == entitySet.Schema)
                      .Except(new[] { entitySet })
                      .UniquifyIdentifier(_pluralizationService.Pluralize(entitySet.Table));
            }
        }
예제 #16
0
        /// <inheritdoc />
        public virtual void Apply(EntityType item, DbModel model)
        {
            Check.NotNull(item, "item");
            Check.NotNull(model, "model");

            _pluralizationService = DbConfiguration.DependencyResolver.GetService <IPluralizationService>();

            if (item.GetTableName() == null)
            {
                var entitySet = model.StoreModel.GetEntitySet(item);

                entitySet.Table
                    = model.StoreModel.GetEntitySets()
                      .Where(es => es.Schema == entitySet.Schema)
                      .Except(new[] { entitySet })
                      .Select(n => n.Table)
                      .Uniquify(_pluralizationService.Pluralize(entitySet.Table));
            }
        }
예제 #17
0
        // internal for testing
        internal void GenerateEntitySet(
            SimpleMappingContext mappingContext,
            EntitySet storeEntitySet,
            UniqueIdentifierService uniqueEntityContainerNames,
            UniqueIdentifierService globallyUniqueTypeNames)
        {
            Debug.Assert(mappingContext != null, "mappingContext != null");
            Debug.Assert(storeEntitySet != null, "storeEntitySet != null");
            Debug.Assert(uniqueEntityContainerNames != null, "uniqueEntityContainerNames != null");
            Debug.Assert(globallyUniqueTypeNames != null, "globallyUniqueTypeNames != null");

            var conceptualEntityType = GenerateEntityType(mappingContext, storeEntitySet.ElementType, globallyUniqueTypeNames);

            var conceptualEntitySetName = CreateModelName(
                (_pluralizationService != null) ? _pluralizationService.Pluralize(storeEntitySet.Name) : storeEntitySet.Name,
                uniqueEntityContainerNames);

            var conceptualEntitySet = EntitySet.Create(conceptualEntitySetName, null, null, null, conceptualEntityType, null);

            mappingContext.AddMapping(storeEntitySet, conceptualEntitySet);
        }
 private static string GetNavigationPropertyName(IPluralizationService service, AssociationEndMember toEnd, string storeTableName)
 {
     return service == null
                ? storeTableName
                : toEnd.RelationshipMultiplicity == RelationshipMultiplicity.Many
                      ? service.Pluralize(storeTableName)
                      : service.Singularize(storeTableName);
 }
예제 #19
0
        private string GetPluralizedName()
        {
            var className = typeof(T).Name;

            return(pluralizationService.Pluralize(className));
        }
예제 #20
0
 public string Pluralize(string input)
 {
     return(pluralizationService.Pluralize(input));
 }
예제 #21
0
 public static string Pluralize(string word)
 {
     return(PluralizationService.Pluralize(word));
 }
예제 #22
0
 public static string Pluralize(this string name)
 {
     return(pluralizationService.Pluralize(name)); // remove EF type suffix, if any
 }
예제 #23
0
 static string Pluralize(string word, bool pluralize)
 {
     return(pluralize? pluralizationService.Pluralize(word) : word);
 }