Exemple #1
0
        private void AppendProperties(TableFieldInfo targetTableProperty, string currentTablePrimaryKey)
        {
            // پراپرتی های ارتباطی رو داخل رجیون باید بیارم
            var relationProperty = this.TargetTableRelations.FirstOrDefault(c => c.ColumnName == targetTableProperty.Name && c.ColumnName != currentTablePrimaryKey);

            if (relationProperty != null)
            {
                return;
            }

            // گرفتن معنی پراپرتی
            string columnTranslatedName = string.Empty;
            var    columnMeaning        = GeneratorDatabaseProcessor.Titles.FirstOrDefault(c => c.Single == targetTableProperty.Name || c.Plural == targetTableProperty.Name);

            if (columnMeaning != null)
            {
                columnTranslatedName = columnMeaning.Meaning;
            }

            // append properties
            bool isPropertyNullable = false;
            IGenerateAnnotationAttributesStrategy annotationAttributesStategy = GenerateAnnotationAttributesFactory.GetStrategy(EntitiesCodeGeneratorSettings.DataAnnotationAttributeGenerateMode);

            annotationAttributesStategy.AppendAttributes(ref NewEntityClassContent, ref isPropertyNullable, columnTranslatedName, targetTableProperty);

            // create property
            IGeneratePropertyStrategy generatePropertyStrategy = GeneratePropertyFactory.GetStrategy(EntitiesCodeGeneratorSettings.VirtualizePropertiesMode);

            generatePropertyStrategy.AppendProperty(ref NewEntityClassContent, TargetDatabaseDataReceiver.GetColumnType(targetTableProperty.Type), targetTableProperty.Name, isPropertyNullable);
        }
        /// <summary>
        /// جایگزینی تگ های داخل تمپلیت کلاس کنترلر
        /// </summary>
        private void ReplaceControllerTemplateTags(ref string template, string tableName, string tableSingleName, string schemaName)
        {
            template = template.Replace("[DATABASECONTEXT_CONTEXT_NAMESPACE_NAME]", GeneratorSettingsManager.DATABASECONTEXT_CONTEXT_NAMESPACE_NAME);
            template = template.Replace("[ENTITIES_NAMESPACE_NAME]", GeneratorSettingsManager.ENTITIES_NAMESPACE_NAME);
            template = template.Replace("[SERVICES_INTERFACES_NAMESPACE_NAME]", GeneratorSettingsManager.SERVICES_INTERFACES_NAMESPACE_NAME);
            template = template.Replace("[VIEWMODEL_LAYER_NAME]", GeneratorSettingsManager.VIEWMODEL_LAYER_NAME);
            template = template.Replace("[SchemaName]", schemaName);
            template = template.Replace("[TableSingleName]", tableSingleName);
            template = template.Replace("[TableSingleNameCamelCase]", tableSingleName.ToCamelCaseFormat());

            this.TargetDatabaseRelations = TargetDatabaseDataReceiver.GetTargetTableRelations(tableName, GeneratorSettingsManager.TARGET_DATABASE_CONNECTION_STRING);
            ReplaceControllerDependencyPropsAndCunstructorClause(ref template, tableSingleName);
            LoadRelationViewModelEntitiesClause(ref template, tableName, tableSingleName);
        }
Exemple #3
0
        public string Create(
            string targetDbName,
            string targetTableName,
            string targetSchemaName,
            TableNameInfo targetTableNameInfo,
            string targetTableConnectionString,
            string entitiesNameSpaceName,
            string TableSchemaName,
            string tableSingleName,
            string tablePluralName,
            AttributesLanguageMode attributesLanguageMode)
        {
            this.AttributesLanguageMode = attributesLanguageMode;

            // گرفتن خصوصیات جدول جاری
            this.TargetTableProperties = TargetDatabaseDataReceiver.GetTargetTableProperties(targetDbName, targetTableName, targetTableConnectionString);

            // گرفتن ریلیشن های جدول جاری
            this.TargetTableRelations = TargetDatabaseDataReceiver.GetTargetTableRelations(targetTableName, targetTableConnectionString);

            // add using clause
            AppendUsingsAndClassName(entitiesNameSpaceName, TableSchemaName, tableSingleName, tablePluralName, "");

            //-----------------------------------------------------------------------------------------
            IPrimaryKeyNameStrategy pkNameStrategy = PrimaryKeyNameModeFactory.GetStrategy(EntitiesCodeGeneratorSettings.PrimaryKeyNameMode);
            string pkName = string.Empty;

            // تخصیص خصوصیت به جدول
            foreach (var targetTableProperty in this.TargetTableProperties)
            {
                pkName = pkNameStrategy.GetTablePrimaryKeyName(tableSingleName);
                AppendProperties(targetTableProperty, pkName);
            }

            AppendProjectNameSpacesUsings(targetSchemaName);

            if (EntitiesCodeGeneratorSettings.NavigatePropertyGenerateMode == NavigatePropertyGenerateMode.PutNavigateProperties)
            {
                AppendNavigationProperties(targetTableName);
            }

            this.NewEntityClassContent.Append("\n\t}\n}");

            string result = NewEntityClassContent.ToString();

            this.NewEntityClassContent = new StringBuilder(string.Empty);

            return(result);
        }
Exemple #4
0
        /// <summary>
        /// جایگزینی تگ های داخل تمپلیت کلاس لایه سرویس
        /// </summary>
        private void ReplaceServiceClassTemplateTags(ref string template, string tableName, string tableSingleName, string schemaName)
        {
            template = template.Replace("[DATABASECONTEXT_CONTEXT_NAMESPACE_NAME]", GeneratorSettingsManager.DATABASECONTEXT_CONTEXT_NAMESPACE_NAME);
            template = template.Replace("[ENTITIES_NAMESPACE_NAME]", GeneratorSettingsManager.ENTITIES_NAMESPACE_NAME);
            template = template.Replace("[SERVICES_CLASS_NAMESPACE_NAME]", GeneratorSettingsManager.SERVICES_CLASS_NAMESPACE_NAME);
            template = template.Replace("[SERVICES_INTERFACES_NAMESPACE_NAME]", GeneratorSettingsManager.SERVICES_INTERFACES_NAMESPACE_NAME);
            template = template.Replace("[VIEWMODEL_LAYER_NAME]", GeneratorSettingsManager.VIEWMODEL_LAYER_NAME);
            template = template.Replace("[SchemaName]", schemaName);
            template = template.Replace("[TableSingleName]", tableSingleName);
            template = template.Replace("[TableSingleNameCamelCase]", tableSingleName.ToCamelCaseFormat());

            TargetDatabaseRelations = TargetDatabaseDataReceiver.GetTargetTableRelations(tableName, GeneratorSettingsManager.TARGET_DATABASE_CONNECTION_STRING);
            ReplaceGetAllJoinClause(ref template, tableName, tableSingleName);
            ReplaceGetAllSelectClause(ref template, tableName);
        }
Exemple #5
0
        private void AddSelectClause(ref string selectClause, string tableName, bool tableHaveRelation)
        {
            IList <TableFieldInfo> tableFields = new List <TableFieldInfo>();
            string formatPattern = tableHaveRelation ? "{0} = Result.{1}.{0}, " : "{0} = Result.{0}, ";

            selectClause += string.Format(@"{0} = new {0}() {{ ", tableName);

            tableFields = TargetDatabaseDataReceiver.GetTargetTableProperties(GeneratorSettingsManager.TARGET_DATABASE_NAME, tableName, GeneratorSettingsManager.TARGET_DATABASE_CONNECTION_STRING);

            foreach (var tableField in tableFields)
            {
                selectClause += string.Format(formatPattern, tableField.Name, tableName);
            }

            selectClause = selectClause.Substring(0, selectClause.Length - 2) + " }";
        }
Exemple #6
0
        private void AppendNavigationProperties(string targetTableName)
        {
            if (EntitiesCodeGeneratorSettings.RegionGenerateMode == RegionGenerateMode.PutRegions)
            {
                NewEntityClassContent.Append("\n\t\t#region Navigation Properties\n\n");
            }

            foreach (var targetTableRelation in this.TargetTableRelations)
            {
                string refrencedTable = TargetDatabaseDataReceiver.GetTableSingleName(targetTableRelation.ReferenceTableName);
                string childTable     = TargetDatabaseDataReceiver.GetTableSingleName(targetTableRelation.TableName);

                NewEntityClassContent.Append("\t\t// ----- " + refrencedTable + "\n");

                if (targetTableRelation.TableName == targetTableName)
                {
                    NewEntityClassContent.Append("\t\tpublic virtual long " + targetTableRelation.ColumnName + " { get; set; }\n\n");

                    NewEntityClassContent.Append("\t\t[ForeignKey(\"" + targetTableRelation.ColumnName + "\")]\n");

                    if (targetTableRelation.ReferenceTableName == targetTableName)
                    {
                        NewEntityClassContent.Append("\t\tpublic virtual " + refrencedTable + " " + refrencedTable + "Parent { get; set; }\n\n");
                    }
                    else
                    {
                        NewEntityClassContent.Append("\t\tpublic virtual " + refrencedTable + " " + refrencedTable + " { get; set; }\n\n");
                    }
                }

                if (targetTableRelation.TableName != targetTableName)
                {
                    // TODO
                    // باید درست بشه تا اسم جمع جدول رو بذاره
                    NewEntityClassContent.Append("\t\tpublic virtual ICollection<" + childTable + "> " + targetTableRelation.TableName + " { get; set; }\n\n");
                }

                NewEntityClassContent.Append("\n");
            }

            if (EntitiesCodeGeneratorSettings.RegionGenerateMode == RegionGenerateMode.PutRegions)
            {
                NewEntityClassContent.Append("\t\t#endregion");
            }
        }