/// <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()); }
public CurdTask(IBuilderTask task, TableInfo info) { this.Task = task; this.CurrentTable = info; }