mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 增加 FreeSql.Generator 在目标目录产生 __razor.cshtml.txt 文件,以便自定义修改模板生成;
This commit is contained in:
		@@ -19,7 +19,7 @@ namespace FreeSql.Generator
 | 
				
			|||||||
        string ArgsConnectionString { get; }
 | 
					        string ArgsConnectionString { get; }
 | 
				
			||||||
        string ArgsFilter { get; }
 | 
					        string ArgsFilter { get; }
 | 
				
			||||||
        string ArgsFileName { get; }
 | 
					        string ArgsFileName { get; }
 | 
				
			||||||
        string ArgsOutput { get; }
 | 
					        internal string ArgsOutput { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public ConsoleApp(string[] args, ManualResetEvent wait)
 | 
					        public ConsoleApp(string[] args, ManualResetEvent wait)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -57,7 +57,16 @@ new Colorful.Formatter("v" + string.Join(".", typeof(ConsoleApp).Assembly.GetNam
 | 
				
			|||||||
            ArgsNameSpace = "MyProject";
 | 
					            ArgsNameSpace = "MyProject";
 | 
				
			||||||
            ArgsFilter = "";
 | 
					            ArgsFilter = "";
 | 
				
			||||||
            ArgsFileName = "{name}.cs";
 | 
					            ArgsFileName = "{name}.cs";
 | 
				
			||||||
            ArgsOutput = Directory.GetCurrentDirectory();
 | 
					            Action<string> setArgsOutput = value =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ArgsOutput = value;
 | 
				
			||||||
 | 
					                ArgsOutput = ArgsOutput.Trim().TrimEnd('/', '\\');
 | 
				
			||||||
 | 
					                ArgsOutput += ArgsOutput.Contains("\\") ? "\\" : "/";
 | 
				
			||||||
 | 
					                if (!Directory.Exists(ArgsOutput))
 | 
				
			||||||
 | 
					                    Directory.CreateDirectory(ArgsOutput);
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            setArgsOutput(Directory.GetCurrentDirectory());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            string args0 = args[0].Trim().ToLower();
 | 
					            string args0 = args[0].Trim().ToLower();
 | 
				
			||||||
            if (args[0] == "?" || args0 == "--help" || args0 == "-help")
 | 
					            if (args[0] == "?" || args0 == "--help" || args0 == "-help")
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@@ -125,9 +134,9 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            for (int a = 0; a < args.Length; a++)
 | 
					            for (int a = 0; a < args.Length; a++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                switch (args[a])
 | 
					                switch (args[a].Trim().ToLower())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    case "-Razor":
 | 
					                    case "-razor":
 | 
				
			||||||
                        ArgsRazorRaw = args[a + 1].Trim();
 | 
					                        ArgsRazorRaw = args[a + 1].Trim();
 | 
				
			||||||
                        switch (ArgsRazorRaw)
 | 
					                        switch (ArgsRazorRaw)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
@@ -138,16 +147,16 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
 | 
				
			|||||||
                        a++;
 | 
					                        a++;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    case "-NameOptions":
 | 
					                    case "-nameoptions":
 | 
				
			||||||
                        ArgsNameOptions = args[a + 1].Split(',').Select(opt => opt == "1").ToArray();
 | 
					                        ArgsNameOptions = args[a + 1].Split(',').Select(opt => opt == "1").ToArray();
 | 
				
			||||||
                        if (ArgsNameOptions.Length != 4) throw new ArgumentException("-NameOptions 参数错误,格式为:0,0,0,0");
 | 
					                        if (ArgsNameOptions.Length != 4) throw new ArgumentException("-NameOptions 参数错误,格式为:0,0,0,0");
 | 
				
			||||||
                        a++;
 | 
					                        a++;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case "-NameSpace":
 | 
					                    case "-namespace":
 | 
				
			||||||
                        ArgsNameSpace = args[a + 1];
 | 
					                        ArgsNameSpace = args[a + 1];
 | 
				
			||||||
                        a++;
 | 
					                        a++;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case "-DB":
 | 
					                    case "-db":
 | 
				
			||||||
                        var dbargs = args[a + 1].Split(',', 2);
 | 
					                        var dbargs = args[a + 1].Split(',', 2);
 | 
				
			||||||
                        if (dbargs.Length != 2) throw new ArgumentException("-DB 参数错误,格式为:MySql,ConnectionString");
 | 
					                        if (dbargs.Length != 2) throw new ArgumentException("-DB 参数错误,格式为:MySql,ConnectionString");
 | 
				
			||||||
                        switch (dbargs[0].Trim().ToLower())
 | 
					                        switch (dbargs[0].Trim().ToLower())
 | 
				
			||||||
@@ -162,16 +171,16 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
 | 
				
			|||||||
                        ArgsConnectionString = dbargs[1].Trim();
 | 
					                        ArgsConnectionString = dbargs[1].Trim();
 | 
				
			||||||
                        a++;
 | 
					                        a++;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case "-Filter":
 | 
					                    case "-filter":
 | 
				
			||||||
                        ArgsFilter = args[a + 1];
 | 
					                        ArgsFilter = args[a + 1];
 | 
				
			||||||
                        a++;
 | 
					                        a++;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case "-FileName":
 | 
					                    case "-filename":
 | 
				
			||||||
                        ArgsFileName = args[a + 1];
 | 
					                        ArgsFileName = args[a + 1];
 | 
				
			||||||
                        a++;
 | 
					                        a++;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case "-Output":
 | 
					                    case "-output":
 | 
				
			||||||
                        ArgsOutput = args[a + 1];
 | 
					                        setArgsOutput(args[a + 1]);
 | 
				
			||||||
                        a++;
 | 
					                        a++;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -179,11 +188,6 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (string.IsNullOrEmpty(ArgsConnectionString)) throw new ArgumentException($"-DB 参数错误,未提供 ConnectionString");
 | 
					            if (string.IsNullOrEmpty(ArgsConnectionString)) throw new ArgumentException($"-DB 参数错误,未提供 ConnectionString");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ArgsOutput = ArgsOutput.Trim().TrimEnd('/', '\\');
 | 
					 | 
				
			||||||
            ArgsOutput += ArgsOutput.Contains("\\") ? "\\" : "/";
 | 
					 | 
				
			||||||
            if (!Directory.Exists(ArgsOutput))
 | 
					 | 
				
			||||||
                Directory.CreateDirectory(ArgsOutput);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            RazorEngine.Engine.Razor = RazorEngineService.Create(new RazorEngine.Configuration.TemplateServiceConfiguration
 | 
					            RazorEngine.Engine.Razor = RazorEngineService.Create(new RazorEngine.Configuration.TemplateServiceConfiguration
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                EncodedStringFactory = new RazorEngine.Text.RawStringFactory() // Raw string encoding.
 | 
					                EncodedStringFactory = new RazorEngine.Text.RawStringFactory() // Raw string encoding.
 | 
				
			||||||
@@ -201,7 +205,6 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
 | 
				
			|||||||
                var tables = fsql.DbFirst.GetTablesByDatabase();
 | 
					                var tables = fsql.DbFirst.GetTablesByDatabase();
 | 
				
			||||||
                var outputTables = tables;
 | 
					                var outputTables = tables;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
                //开始生成操作
 | 
					                //开始生成操作
 | 
				
			||||||
                foreach (var table in outputTables)
 | 
					                foreach (var table in outputTables)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -267,8 +270,16 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
 | 
				
			|||||||
            var rebuildBat = ArgsOutput + "__重新生成.bat";
 | 
					            var rebuildBat = ArgsOutput + "__重新生成.bat";
 | 
				
			||||||
            if (File.Exists(rebuildBat) == false)
 | 
					            if (File.Exists(rebuildBat) == false)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					                var razorCshtml = ArgsOutput + "__razor.cshtml.txt";
 | 
				
			||||||
 | 
					                if (File.Exists(razorCshtml) == false)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    File.WriteAllText(razorCshtml, ArgsRazor);
 | 
				
			||||||
 | 
					                    Console.WriteFormatted(" OUT -> " + razorCshtml + "    (以后) 编辑它自定义模板生成\r\n", Color.Magenta);
 | 
				
			||||||
 | 
					                    ++outputCounter;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                File.WriteAllText(rebuildBat, $@"
 | 
					                File.WriteAllText(rebuildBat, $@"
 | 
				
			||||||
FreeSql.Generator -Razor {ArgsRazorRaw} -NameOptions {string.Join(",", ArgsNameOptions.Select(a => a ? 1 : 0))} -NameSpace {ArgsNameSpace} -DB ""{ArgsDbType},{ArgsConnectionString}""{(string.IsNullOrEmpty(ArgsFilter) ? "" : $" -Filter \"{ArgsFilter}\"")} -FileName ""{ArgsFileName}""
 | 
					FreeSql.Generator -Razor ""__razor.cshtml.txt"" -NameOptions {string.Join(",", ArgsNameOptions.Select(a => a ? 1 : 0))} -NameSpace {ArgsNameSpace} -DB ""{ArgsDbType},{ArgsConnectionString}""{(string.IsNullOrEmpty(ArgsFilter) ? "" : $" -Filter \"{ArgsFilter}\"")} -FileName ""{ArgsFileName}""
 | 
				
			||||||
");
 | 
					");
 | 
				
			||||||
                Console.WriteFormatted(" OUT -> " + rebuildBat + "    (以后) 双击它重新生成实体\r\n", Color.Magenta);
 | 
					                Console.WriteFormatted(" OUT -> " + rebuildBat + "    (以后) 双击它重新生成实体\r\n", Color.Magenta);
 | 
				
			||||||
                ++outputCounter;
 | 
					                ++outputCounter;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user