Esempio n. 1
0
        /// <summary>
        /// Generate CSharp property for every database field.
        /// </summary>
        private static void FieldNameProperty(MetaCSharp metaCSharp, string schemaName, string tableName, StringBuilder result)
        {
            var  fieldNameList = metaCSharp.List.Where(item => item.Schema.SchemaName == schemaName && item.Schema.TableName == tableName).ToArray();
            bool isFirst       = true;

            foreach (var item in fieldNameList)
            {
                if (isFirst)
                {
                    isFirst = false;
                }
                else
                {
                    result.AppendLine();
                }
                if (item.FrameworkTypeEnum == FrameworkTypeEnum.None)
                {
                    UtilCli.ConsoleWriteLineColor(string.Format("Warning! Type not supported by framework. ({0}.{1}.{2})", item.Schema.SchemaName, item.Schema.TableName, item.Schema.FieldName), ConsoleColor.Yellow);
                }
                else
                {
                    string typeCSharp = UtilGenerate.SqlTypeToCSharpType(item.Schema.SqlType, item.Schema.IsNullable);
                    if (item.IsPrimaryKey == false)
                    {
                        result.AppendLine(string.Format("        [SqlField(\"{0}\", {2})]", item.Schema.FieldName, item.TableNameCSharp + "_" + item.FieldNameCSharp, nameof(FrameworkTypeEnum) + "." + item.FrameworkTypeEnum.ToString()));
                    }
                    else
                    {
                        result.AppendLine(string.Format("        [SqlField(\"{0}\", {2}, {3})]", item.Schema.FieldName, item.TableNameCSharp + "_" + item.FieldNameCSharp, item.IsPrimaryKey.ToString().ToLower(), nameof(FrameworkTypeEnum) + "." + item.FrameworkTypeEnum.ToString()));
                    }
                    result.AppendLine(string.Format("        public " + typeCSharp + " {0} {{ get; set; }}", item.FieldNameCSharp));
                }
            }
        }
Esempio n. 2
0
        private void TableName(MetaSqlSchema[] dataList, string schemaName, string schemaNameCSharp)
        {
            string[]      tableNameList  = dataList.Where(item => item.SchemaName == schemaName).GroupBy(item => item.TableName, (key, group) => key).ToArray();
            List <string> nameExceptList = new List <string>();

            foreach (string tableName in tableNameList)
            {
                string tableNameCSharp = UtilGenerate.NameCSharp(tableName, nameExceptList);
                FieldName(dataList, schemaName, schemaNameCSharp, tableName, tableNameCSharp);
            }
        }
Esempio n. 3
0
        private void SchemaName(MetaSqlSchema[] dataList)
        {
            string[]      schemaNameList = dataList.GroupBy(item => item.SchemaName, (key, group) => key).ToArray();
            List <string> nameExceptList = new List <string>();

            foreach (string schemaName in schemaNameList)
            {
                string schemaNameCSharp = UtilGenerate.NameCSharp(schemaName, nameExceptList);
                TableName(dataList, schemaName, schemaNameCSharp);
            }
        }
        private static void GenerateCSharpNameEnum(GenerateIntegrateItem integrate, StringBuilder result)
        {
            var fieldList   = UtilDalType.TypeRowToFieldList(integrate.TypeRow);
            var fieldId     = fieldList.SingleOrDefault(item => item.FieldNameCSharp == "Id");     // See also FieldIntegrate.IsKey
            var fieldIdName = fieldList.SingleOrDefault(item => item.FieldNameCSharp == "IdName"); // See also FieldIntegrate.IsKey

            if (fieldIdName != null)
            {
                result.Append(string.Format("        public enum IdEnum {{ [IdEnum(null)]None = 0"));
                List <string> nameExceptList = new List <string>();
                int           count          = 0;
                foreach (Row row in integrate.RowList)
                {
                    count += 1;
                    string idName     = (string)fieldIdName.PropertyInfo.GetValue(row);
                    string nameCSharp = UtilGenerate.NameCSharp(idName, nameExceptList);
                    result.Append(string.Format(", [IdEnum(\"{0}\")]{1} = {2}", idName, nameCSharp, count * -1)); // Count * -1 to ensure there is no relation between enum id and database record id!
                }
                result.AppendLine(string.Format(" }}"));
                result.AppendLine();
                result.AppendLine(string.Format("        public static {0} Row(this IdEnum value)", integrate.TableNameCSharp));
                result.AppendLine(string.Format("        {{"));
                result.AppendLine(string.Format("            return RowList.Where(item => item.IdName == IdEnumAttribute.IdNameFromEnum(value)).SingleOrDefault();"));
                result.AppendLine(string.Format("        }}"));
                result.AppendLine();
                result.AppendLine(string.Format("        public static IdEnum IdName(string value)"));
                result.AppendLine(string.Format("        {{"));
                result.AppendLine(string.Format("            return IdEnumAttribute.IdNameToEnum<IdEnum>(value);"));
                result.AppendLine(string.Format("        }}"));
                result.AppendLine();
                result.AppendLine(string.Format("        public static string IdName(this IdEnum value)"));
                result.AppendLine(string.Format("        {{"));
                result.AppendLine(string.Format("            return IdEnumAttribute.IdNameFromEnum(value);"));
                result.AppendLine(string.Format("        }}"));
                result.AppendLine();
                result.AppendLine(string.Format("        public static async Task<int> Id(this IdEnum value)"));
                result.AppendLine(string.Format("        {{"));
                result.AppendLine(string.Format("            return (await Data.Query<{0}>().Where(item => item.IdName == IdEnumAttribute.IdNameFromEnum(value)).QueryExecuteAsync()).Single().Id;", integrate.TableNameCSharp));
                result.AppendLine(string.Format("        }}"));
                result.AppendLine();
            }
        }
Esempio n. 5
0
        private void FieldName(MetaSqlSchema[] dataList, string schemaName, string schemaNameCSharp, string tableName, string tableNameCSharp)
        {
            MetaSqlSchema[] fieldList      = dataList.Where(item => item.SchemaName == schemaName && item.TableName == tableName).ToArray();
            List <string>   nameExceptList = new List <string>();

            nameExceptList.Add(tableName); // CSharp propery can not have same name like class.
            foreach (MetaSqlSchema field in fieldList)
            {
                string            fieldNameCSharp   = UtilGenerate.NameCSharp(field.FieldName, nameExceptList);
                FrameworkTypeEnum frameworkTypeEnum = UtilDalType.SqlTypeToFrameworkTypeEnum(field.SqlType);
                List.Add(new MetaCSharpSchema()
                {
                    Schema            = field,
                    SchemaNameCSharp  = schemaNameCSharp,
                    TableNameCSharp   = tableNameCSharp,
                    FieldNameCSharp   = fieldNameCSharp,
                    IsPrimaryKey      = field.IsPrimaryKey,
                    FrameworkTypeEnum = frameworkTypeEnum,
                });
            }
        }