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); }
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); }
/// <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); }
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) + " }"; }
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"); } }