/// <summary>
        /// 获取命名空间
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        public static string GetNameSpace(this IBuilderTask task)
        {
            var currentTable = task.CurrentTable.CsName;
            var res          = $"{task?.Project?.ProjectInfo?.NameSpace}.{task?.CurrentBuilder?.ReplaceTablePath(currentTable).Replace("/",".")}";

            return(res);
        }
        /// <summary>
        /// 获取DbFirst名称
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        public static string GetDbFirstName(this IBuilderTask task)
        {
            if (task.CurrentBuilder == null)
            {
                return(task.CurrentDbTable.Name);
            }
            var convert     = new DefaultWordsConvert(task.CurrentBuilder.Mode);
            var convertName = convert.Convert(task.CurrentDbTable.Name);

            return($"{task.CurrentBuilder.Prefix}{convertName}{task.CurrentBuilder.Suffix}");
        }
        /// <summary>
        /// 计算引用并生成字符串
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        public static string GetUsing(this IBuilderTask task)
        {
            //获取当前实体表的所有属性 并获取实体属性的类型所在命名空间
            var namespaces = task.CurrentTable.Properties
                             ?.Select(x => x.Value.PropertyType.Namespace)
                             .Distinct()
                             .ToList();
            var genericType = task.CurrentTable.Properties?
                              .Where(x => x.Value.PropertyType.IsGenericType)
                              .Select(x => x.Value.PropertyType.GetGenericArguments().FirstOrDefault()?.Namespace)
                              .ToList();

            namespaces = namespaces?.Concat(genericType).Distinct().ToList();
            StringBuilder usingStr = new StringBuilder();

            namespaces?.ForEach(u => usingStr.AppendLine($"using {u};"));
            return(usingStr.ToString());
        }
        /// <summary>
        /// 输出文件拓展
        /// </summary>
        /// <param name="task"></param>
        /// <param name="tableName"></param>
        /// <param name="content"></param>
        /// <returns></returns>
        public static async Task OutPut(this IBuilderTask task, string tableName, string content)
        {
            var project    = task.Project;
            var root       = project == null ? AppContext.BaseDirectory : project.ProjectInfo.RootPath;
            var outPutPath = project == null ? "FreeSqlBuilder" : project?.ProjectInfo.ReplaceTablePath(tableName);
            var rootPath   = Path.Combine(root, outPutPath);
            var dirPath    = Path.Combine(rootPath, task.CurrentBuilder.ReplaceTablePath(tableName));
            var outputPath = Path.Combine(dirPath, $"{task.CurrentBuilder.GetName(tableName)}.{task.CurrentBuilder.FileExtensions}");

            if (!Directory.Exists(dirPath))
            {
                Directory.CreateDirectory(dirPath);
            }
            var fileExists = File.Exists(outputPath);

            if (fileExists)
            {
                File.Delete(outputPath);
            }
            await using var streamWriter = new StreamWriter(outputPath);
            await streamWriter.WriteAsync(content.Trim());
        }
Example #5
0
 public CurdTask(IBuilderTask task, TableInfo info)
 {
     this.Task         = task;
     this.CurrentTable = info;
 }