mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 增加 FreeSql.Generator -Filter 设置选项,可阻止存储过程+视图的生成;
This commit is contained in:
parent
969e690682
commit
ad623e0b62
@ -17,6 +17,7 @@ namespace FreeSql.Generator
|
|||||||
string ArgsNameSpace { get; }
|
string ArgsNameSpace { get; }
|
||||||
DataType ArgsDbType { get; }
|
DataType ArgsDbType { get; }
|
||||||
string ArgsConnectionString { get; }
|
string ArgsConnectionString { get; }
|
||||||
|
string ArgsFilter { get; }
|
||||||
string ArgsFileName { get; }
|
string ArgsFileName { get; }
|
||||||
string ArgsOutput { get; }
|
string ArgsOutput { get; }
|
||||||
|
|
||||||
@ -50,9 +51,13 @@ namespace FreeSql.Generator
|
|||||||
new Colorful.Formatter("https://github.com/2881099/FreeSql", Color.DeepSkyBlue),
|
new Colorful.Formatter("https://github.com/2881099/FreeSql", Color.DeepSkyBlue),
|
||||||
new Colorful.Formatter("v" + string.Join(".", typeof(ConsoleApp).Assembly.GetName().Version.ToString().Split('.').Where((a, b) => b <= 2)), Color.SlateGray));
|
new Colorful.Formatter("v" + string.Join(".", typeof(ConsoleApp).Assembly.GetName().Version.ToString().Split('.').Where((a, b) => b <= 2)), Color.SlateGray));
|
||||||
|
|
||||||
|
ArgsRazorRaw = "1";
|
||||||
|
ArgsRazor = RazorContentManager.实体类_特性_cshtml;
|
||||||
ArgsNameOptions = new[] { false, false, false, false };
|
ArgsNameOptions = new[] { false, false, false, false };
|
||||||
ArgsOutput = Directory.GetCurrentDirectory();
|
ArgsNameSpace = "MyProject";
|
||||||
|
ArgsFilter = "";
|
||||||
ArgsFileName = "{name}.cs";
|
ArgsFileName = "{name}.cs";
|
||||||
|
ArgsOutput = 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")
|
||||||
{
|
{
|
||||||
@ -92,6 +97,10 @@ new Colorful.Formatter("v" + string.Join(".", typeof(ConsoleApp).Assembly.GetNam
|
|||||||
-DB ""{10},Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=USER1;PWD=123456789;Max pool size=2""
|
-DB ""{10},Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236;Persist Security Info=False;Trusted_Connection=Yes;UID=USER1;PWD=123456789;Max pool size=2""
|
||||||
{10} 是国产达梦数据库,需要使用 ODBC 连接
|
{10} 是国产达梦数据库,需要使用 ODBC 连接
|
||||||
|
|
||||||
|
-Filter Table+View+StoreProcedure
|
||||||
|
默认生成:表+视图+存储过程
|
||||||
|
如果不想生成视图和存储过程 -Fitler View+StoreProcedure
|
||||||
|
|
||||||
-FileName 文件名,默认:{name}.cs
|
-FileName 文件名,默认:{name}.cs
|
||||||
|
|
||||||
-Output 保存路径,默认为当前 shell 所在目录
|
-Output 保存路径,默认为当前 shell 所在目录
|
||||||
@ -151,7 +160,10 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
|
|||||||
default: throw new ArgumentException($"-DB 参数错误,不支持的类型:{dbargs[0]}");
|
default: throw new ArgumentException($"-DB 参数错误,不支持的类型:{dbargs[0]}");
|
||||||
}
|
}
|
||||||
ArgsConnectionString = dbargs[1].Trim();
|
ArgsConnectionString = dbargs[1].Trim();
|
||||||
if (string.IsNullOrEmpty(ArgsConnectionString)) throw new ArgumentException($"-DB 参数错误,未提供 ConnectionString");
|
a++;
|
||||||
|
break;
|
||||||
|
case "-Filter":
|
||||||
|
ArgsFilter = args[a + 1];
|
||||||
a++;
|
a++;
|
||||||
break;
|
break;
|
||||||
case "-FileName":
|
case "-FileName":
|
||||||
@ -165,6 +177,8 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(ArgsConnectionString)) throw new ArgumentException($"-DB 参数错误,未提供 ConnectionString");
|
||||||
|
|
||||||
ArgsOutput = ArgsOutput.Trim().TrimEnd('/', '\\');
|
ArgsOutput = ArgsOutput.Trim().TrimEnd('/', '\\');
|
||||||
ArgsOutput += ArgsOutput.Contains("\\") ? "\\" : "/";
|
ArgsOutput += ArgsOutput.Contains("\\") ? "\\" : "/";
|
||||||
if (!Directory.Exists(ArgsOutput))
|
if (!Directory.Exists(ArgsOutput))
|
||||||
@ -191,6 +205,30 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
|
|||||||
//开始生成操作
|
//开始生成操作
|
||||||
foreach (var table in outputTables)
|
foreach (var table in outputTables)
|
||||||
{
|
{
|
||||||
|
switch (table.Type)
|
||||||
|
{
|
||||||
|
case DatabaseModel.DbTableType.TABLE:
|
||||||
|
if (ArgsFilter.Contains("Table", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
Console.WriteFormatted(" Ignore Table -> " + table.Name + "\r\n", Color.DarkSlateGray);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DatabaseModel.DbTableType.VIEW:
|
||||||
|
if (ArgsFilter.Contains("View", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
Console.WriteFormatted(" Ignore View -> " + table.Name + "\r\n", Color.DarkSlateGray);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DatabaseModel.DbTableType.StoreProcedure:
|
||||||
|
if (ArgsFilter.Contains("StoreProcedure", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
Console.WriteFormatted(" Ignore StoreProcedure -> " + table.Name + "\r\n", Color.DarkSlateGray);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
var sw = new StringWriter();
|
var sw = new StringWriter();
|
||||||
var model = new RazorModel(fsql, ArgsNameSpace, ArgsNameOptions, tables, table);
|
var model = new RazorModel(fsql, ArgsNameSpace, ArgsNameOptions, tables, table);
|
||||||
RazorEngine.Engine.Razor.Run(razorId, sw, null, model);
|
RazorEngine.Engine.Razor.Run(razorId, sw, null, model);
|
||||||
@ -210,7 +248,18 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
|
|||||||
|
|
||||||
var outputFile = $"{ArgsOutput}{ArgsFileName.Replace("{name}", model.GetCsName(table.Name))}";
|
var outputFile = $"{ArgsOutput}{ArgsFileName.Replace("{name}", model.GetCsName(table.Name))}";
|
||||||
File.WriteAllText(outputFile, plus.ToString());
|
File.WriteAllText(outputFile, plus.ToString());
|
||||||
Console.WriteFormatted(" OUT -> " + outputFile + "\r\n", Color.DeepSkyBlue);
|
switch (table.Type)
|
||||||
|
{
|
||||||
|
case DatabaseModel.DbTableType.TABLE:
|
||||||
|
Console.WriteFormatted(" OUT Table -> " + outputFile + "\r\n", Color.DeepSkyBlue);
|
||||||
|
break;
|
||||||
|
case DatabaseModel.DbTableType.VIEW:
|
||||||
|
Console.WriteFormatted(" OUT View -> " + outputFile + "\r\n", Color.DeepSkyBlue);
|
||||||
|
break;
|
||||||
|
case DatabaseModel.DbTableType.StoreProcedure:
|
||||||
|
Console.WriteFormatted(" OUT StoreProcedure -> " + outputFile + "\r\n", Color.DeepSkyBlue);
|
||||||
|
break;
|
||||||
|
}
|
||||||
++outputCounter;
|
++outputCounter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,8 +77,8 @@ namespace @gen.NameSpace {
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public static string 实体类_特性_导航属性_cshtml =
|
public static string 实体类_特性_导航属性_cshtml =
|
||||||
#region 长内容
|
#region 长内容
|
||||||
@"@using FreeSql.DatabaseModel;@{
|
@"@using FreeSql.DatabaseModel;@{
|
||||||
|
|
||||||
var isLazying = true; //延时加载
|
var isLazying = true; //延时加载
|
||||||
var isOneToMany = true; //一对多,集合属性
|
var isOneToMany = true; //一对多,集合属性
|
||||||
@ -108,7 +108,7 @@ Func<DbForeignInfo, string> GetFkObjectNameOutside = fkx => {
|
|||||||
if (fkretname.EndsWith(fkx.ReferencedColumns[0].Name, StringComparison.CurrentCultureIgnoreCase)) fkretname = fkretname.Substring(0, fkretname.Length - fkx.ReferencedColumns[0].Name.Length).TrimEnd('_');
|
if (fkretname.EndsWith(fkx.ReferencedColumns[0].Name, StringComparison.CurrentCultureIgnoreCase)) fkretname = fkretname.Substring(0, fkretname.Length - fkx.ReferencedColumns[0].Name.Length).TrimEnd('_');
|
||||||
if (fkretname.EndsWith(fkx.ReferencedTable.Name, StringComparison.CurrentCultureIgnoreCase)) fkretname = fkretname.Substring(0, fkretname.Length - fkx.ReferencedTable.Name.Length).TrimEnd('_');
|
if (fkretname.EndsWith(fkx.ReferencedTable.Name, StringComparison.CurrentCultureIgnoreCase)) fkretname = fkretname.Substring(0, fkretname.Length - fkx.ReferencedTable.Name.Length).TrimEnd('_');
|
||||||
if (fkretname.StartsWith(fkx.ReferencedTable.Name, StringComparison.CurrentCultureIgnoreCase)) fkretname = fkretname.Substring(fkx.ReferencedTable.Name.Length).TrimStart('_');
|
if (fkretname.StartsWith(fkx.ReferencedTable.Name, StringComparison.CurrentCultureIgnoreCase)) fkretname = fkretname.Substring(fkx.ReferencedTable.Name.Length).TrimStart('_');
|
||||||
return fkx.Table.Name + ""s"";
|
return fkx.Table.Name + (string.IsNullOrEmpty(fkretname) ? """" : (""_"" + fkretname));
|
||||||
};
|
};
|
||||||
}@{
|
}@{
|
||||||
switch (gen.fsql.Ado.DataType) {
|
switch (gen.fsql.Ado.DataType) {
|
||||||
@ -179,7 +179,7 @@ namespace @gen.NameSpace {
|
|||||||
}
|
}
|
||||||
@:
|
@:
|
||||||
@:[Navigate(""@string.Join("", "", fk.Columns.Select(a => gen.GetCsName(a.Name)))"")]
|
@:[Navigate(""@string.Join("", "", fk.Columns.Select(a => gen.GetCsName(a.Name)))"")]
|
||||||
@:public@(isLazying ? "" virtual"" : """") @gen.GetCsName(fkTableName) @GetFkObjectName(fk) { get; set; }
|
@:public@(isLazying ? "" virtual"" : """") @gen.GetCsName(fkTableName) @gen.GetCsName(GetFkObjectName(fk)) { get; set; }
|
||||||
}
|
}
|
||||||
@:
|
@:
|
||||||
@:#endregion
|
@:#endregion
|
||||||
@ -197,7 +197,7 @@ namespace @gen.NameSpace {
|
|||||||
}
|
}
|
||||||
@:
|
@:
|
||||||
@:[Navigate(""@string.Join("", "", fk.Columns.Select(a => gen.GetCsName(a.Name)))"")]
|
@:[Navigate(""@string.Join("", "", fk.Columns.Select(a => gen.GetCsName(a.Name)))"")]
|
||||||
@:public@(isLazying ? "" virtual"" : """") List<@gen.GetCsName(fkTableName)> @GetFkObjectNameOutside(fk)s { get; set; }
|
@:public@(isLazying ? "" virtual"" : """") List<@gen.GetCsName(fkTableName)> @gen.GetCsName(GetFkObjectNameOutside(fk))s { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@:
|
@:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user