/// <summary>
        /// 生成代码文本集合
        /// </summary>
        /// <param name="table">表名</param>
        /// <param name="codeParam">代码参数</param>
        /// <param name="fileNames">文件名集合</param>
        /// <returns>代码文本集合</returns>
        protected override string[] BuilderCodeTexts(TableInfo table, CodeParamInfo codeParam, out string[] fileNames)
        {
            string interfaceFile, classFile;
            string interfaceCode = BuilderInterfaceCode(table, codeParam, out interfaceFile);
            string classCode     = BuilderClassCode(table, codeParam, out classFile);

            fileNames = new string[] { interfaceFile, classFile };
            return(new string[] { interfaceCode, classCode });
        }
        /// <summary>
        /// 生成接口代码
        /// </summary>
        /// <param name="table">表名</param>
        /// <param name="codeParam">代码参数</param>
        /// <param name="fileName">文件名</param>
        /// <returns>接口代码</returns>
        private string BuilderInterfaceCode(TableInfo table, CodeParamInfo codeParam, out string fileName)
        {
            string basicName = table.Name.FristUpper();
            string name      = $"I{basicName}Persistence";

            fileName = $"{name}.cs";

            var desc = string.IsNullOrWhiteSpace(table.Description) ? basicName : table.Description;

            return(InterfaceTemplate
                   .Replace("|NamespacePfx|", codeParam.NamespacePfx)
                   .Replace("|Description|", desc)
                   .Replace("|Name|", name)
                   .Replace("|Model|", basicName)
                   .Replace("|PkType|", codeParam.PkType.ToCodeString()));
        }
        /// <summary>
        /// 生成代码文本集合
        /// </summary>
        /// <param name="table">表名</param>
        /// <param name="codeParam">代码参数</param>
        /// <param name="fileNames">文件名集合</param>
        /// <returns>代码文本集合</returns>
        protected override string[] BuilderCodeTexts(TableInfo table, CodeParamInfo codeParam, out string[] fileNames)
        {
            string basicName = table.Name.FristUpper();
            string name      = $"{basicName}Controller";

            fileNames = new string[] { $"{name}.cs" };

            string desc = string.IsNullOrWhiteSpace(table.Description) ? basicName : table.Description;

            return(new string[]
            {
                ClassTemplate
                .Replace("|NamespacePfx|", codeParam.NamespacePfx)
                .Replace("|Description|", desc)
                .Replace("|Name|", name)
                .Replace("|Model|", basicName)
                .Replace("|PkType|", codeParam.PkType.ToCodeString())
            });
        }
        /// <summary>
        /// 生成类代码
        /// </summary>
        /// <param name="table">表名</param>
        /// <param name="codeParam">代码参数</param>
        /// <param name="fileName">文件名</param>
        /// <returns>类代码</returns>
        private string BuilderClassCode(TableInfo table, CodeParamInfo codeParam, out string fileName)
        {
            string basicName = table.Name.FristUpper();
            string name      = $"{basicName}Persistence";

            fileName = $"{name}.cs";

            StringBuilder insFiled     = new StringBuilder();
            StringBuilder updFiled     = new StringBuilder();
            StringBuilder selAllFiled  = new StringBuilder();
            StringBuilder getValueCase = new StringBuilder();

            if (!table.Columns.IsNullOrCount0())
            {
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    ColumnInfo c        = table.Columns[i];
                    string     propName = c.Name.FristUpper();
                    if (!IGNORE_INSERT_PROPS.Contains(propName))
                    {
                        insFiled.Append($"            \"{c.Name}\",");
                        if (i < table.Columns.Count - 1)
                        {
                            insFiled.AppendLine();
                        }
                    }

                    if (!IGNORE_UPDATE_PROPS.Contains(propName))
                    {
                        if (!(codeParam.IsTenant && "TenantId".Equals(propName)))
                        {
                            updFiled.Append($"            \"{c.Name}\",");
                            if (i < table.Columns.Count - 1)
                            {
                                updFiled.AppendLine();
                            }
                        }
                    }

                    selAllFiled.Append($"            \"{c.Name} {propName}\",");
                    if (i < table.Columns.Count - 1)
                    {
                        selAllFiled.AppendLine();
                    }

                    getValueCase.Append(GetValueCaseTemplate
                                        .Replace("|Field|", c.Name)
                                        .Replace("|Property|", propName));

                    getValueCase.AppendLine();
                    if (i == table.Columns.Count - 1)
                    {
                        continue;
                    }

                    getValueCase.AppendLine();
                }
            }

            var desc = string.IsNullOrWhiteSpace(table.Description) ? basicName : table.Description;

            return(GetClassTemplate(codeParam.Type)
                   .Replace("|DbType|", codeParam.Type)
                   .Replace("|NamespacePfx|", codeParam.NamespacePfx)
                   .Replace("|Description|", desc)
                   .Replace("|Name|", name)
                   .Replace("|Model|", basicName)
                   .Replace("|PkType|", codeParam.PkType.ToCodeString())
                   .Replace("|Table|", table.Name)
                   .Replace("|InsertFields|", insFiled.ToString())
                   .Replace("|UpdateFields|", updFiled.ToString())
                   .Replace("|FieldMapProps|", selAllFiled.ToString())
                   .Replace("|GetValueCase|", getValueCase.ToString()));
        }
Example #5
0
 /// <summary>
 /// 生成代码文本集合
 /// </summary>
 /// <param name="table">表名</param>
 /// <param name="codeParam">代码参数</param>
 /// <param name="fileNames">文件名集合</param>
 /// <returns>代码文本集合</returns>
 protected abstract string[] BuilderCodeTexts(TableInfo table, CodeParamInfo codeParam, out string[] fileNames);
Example #6
0
        /// <summary>
        /// 生成代码文本集合
        /// </summary>
        /// <param name="table">表名</param>
        /// <param name="codeParam">代码参数</param>
        /// <param name="fileNames">文件名集合</param>
        /// <returns>代码文本集合</returns>
        protected override string[] BuilderCodeTexts(TableInfo table, CodeParamInfo codeParam, out string[] fileNames)
        {
            string name        = $"{table.Name.FristUpper()}Info";
            string parentClass = null;

            if (codeParam.IsTenant)
            {
                parentClass = "UserInfo".Equals(name) ? "BasicUserInfo" : "PersonTimeTenantInfo";
            }
            else
            {
                parentClass = "UserInfo".Equals(name) ? "BasicUserInfo" : "PersonTimeInfo";
            }
            EnumGenerator enumGenerator = new EnumGenerator();

            fileNames = new string[] { $"{name}.cs" };
            StringBuilder propCode = new StringBuilder();

            ITypeMapperService typeMapper = SimpleFactory.Create(codeParam.Type);

            if (!table.Columns.IsNullOrCount0())
            {
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    ColumnInfo c        = table.Columns[i];
                    string     propName = c.Name.FristUpper();
                    if (IGNORE_PROP_NAMES.Contains(propName))
                    {
                        continue;
                    }

                    if ("UserInfo".Equals(name))
                    {
                        if (USER_IGNORE_PROP_NAMES.Contains(propName))
                        {
                            continue;
                        }
                    }

                    string      propType = typeMapper.GetPropertyType(c);
                    CommentInfo comment  = null;
                    if (!string.IsNullOrWhiteSpace(c.Description))
                    {
                        try
                        {
                            comment = c.Description.ToJsonObject <CommentInfo>();
                            if (comment != null && comment.Enum != null)
                            {
                                propType = enumGenerator.BuilderCodeText(comment.Enum, codeParam.NamespacePfx);
                            }
                        }
                        catch { }
                    }

                    string        commentDesc = null;
                    StringBuilder attrCode    = new StringBuilder();
                    if (!c.IsNull)
                    {
                        attrCode.Append(GetAttrCode("Required"));
                        attrCode.AppendLine();
                    }
                    if (c.Length != null && "string".Equals(propType))
                    {
                        attrCode.Append(GetAttrCode(string.Format("MaxLength({0})", c.Length)));
                        attrCode.AppendLine();
                    }
                    if (comment != null)
                    {
                        if (string.IsNullOrWhiteSpace(comment.Desc))
                        {
                            commentDesc = c.Description;
                        }
                        else
                        {
                            commentDesc = comment.Desc;
                        }

                        if (!string.IsNullOrWhiteSpace(comment.Name))
                        {
                            attrCode.Append(GetAttrCode(string.Format("DisplayName(\"{0}\")", comment.Name)));
                            attrCode.AppendLine();
                        }

                        if (comment.MinLength != null && "string".Equals(propType))
                        {
                            attrCode.Append(GetAttrCode(string.Format("MinLength({0})", comment.MinLength)));
                            attrCode.AppendLine();
                        }

                        if (comment.Range != null && comment.Range.Length == 2)
                        {
                            attrCode.Append(GetAttrCode(string.Format("Range({0}, {1})", comment.Range[0], comment.Range[1])));
                            attrCode.AppendLine();
                        }
                    }
                    else
                    {
                        commentDesc = c.Description;
                    }

                    if (string.IsNullOrWhiteSpace(commentDesc))
                    {
                        commentDesc = propName;
                    }

                    propCode.Append(PropertyTemplate
                                    .Replace("|Description|", commentDesc)
                                    .Replace("|JsonName|", c.Name.FristLower())
                                    .Replace("|Attribute|", attrCode.ToString())
                                    .Replace("|Type|", propType)
                                    .Replace("|Name|", propName)
                                    .Replace("|Order|", (i + 1).ToString()));

                    if (i == table.Columns.Count - 1)
                    {
                        continue;
                    }

                    propCode.AppendLine();
                    propCode.AppendLine();
                }
            }

            var desc = string.IsNullOrWhiteSpace(table.Description) ? name : table.Description;

            return(new string[]
            {
                ClassTemplate
                .Replace("|NamespacePfx|", codeParam.NamespacePfx)
                .Replace("|Description|", desc)
                .Replace("|Name|", name)
                .Replace("|Inherit|", parentClass)
                .Replace("|PkType|", codeParam.PkType.ToCodeString())
                .Replace("|Property|", propCode.ToString())
            });
        }