diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs index 368889249..99c196aa8 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs @@ -19,6 +19,7 @@ namespace SqlSugar private string Namespace { get; set; } private bool IsAttribute { get; set; } private bool IsDefaultValue { get; set; } + private Func WhereColumnsfunc; private ISqlBuilder SqlBuilder { get @@ -89,13 +90,13 @@ namespace SqlSugar this.PropertyTemplate = func(this.PropertyTemplate); return this; } - public RazorFirst UseRazorAnalysis(string razorClassTemplate,string classNamespace="Models" ) + public RazorFirst UseRazorAnalysis(string razorClassTemplate, string classNamespace = "Models") { if (razorClassTemplate == null) { razorClassTemplate = ""; } - razorClassTemplate=razorClassTemplate.Replace("@Model.Namespace", classNamespace); + razorClassTemplate = razorClassTemplate.Replace("@Model.Namespace", classNamespace); var result = new RazorFirst(); if (this.Context.CurrentConnectionConfig.ConfigureExternalServices?.RazorService != null) { @@ -108,7 +109,7 @@ namespace SqlSugar var columns = this.Context.DbMaintenance.GetColumnInfosByTableName(item.Name, false); RazorTableInfo table = new RazorTableInfo() { - Columns = columns.Select(it => new RazorColumnInfo() + Columns = columns.Where(it => WhereColumnsfunc == null || WhereColumnsfunc(it.DbColumnName)).Select(it => new RazorColumnInfo() { ColumnDescription = it.ColumnDescription, DataType = it.DataType, @@ -124,7 +125,7 @@ namespace SqlSugar }; foreach (var col in table.Columns) { - col.DataType = GetPropertyTypeName(columns.First(it=>it.DbColumnName==col.DbColumnName)); + col.DataType = GetPropertyTypeName(columns.First(it => it.DbColumnName == col.DbColumnName)); } razorList.Add(table); } @@ -167,6 +168,13 @@ namespace SqlSugar return this; } + public IDbFirst WhereColumns(Func func) + { + WhereColumnsfunc = func; + return this; + } + + public IDbFirst Where(params string[] objectNames) { if (objectNames.HasValue()) @@ -235,7 +243,7 @@ namespace SqlSugar classText = classText.Replace(DbFirstTemplate.KeySugarTable, IsAttribute ? string.Format(DbFirstTemplate.ValueSugarTable, tableInfo.Name) : null); if (columns.HasValue()) { - foreach (var item in columns) + foreach (var item in columns.Where(it => WhereColumnsfunc == null || WhereColumnsfunc(it.DbColumnName))) { var isLast = columns.Last() == item; var index = columns.IndexOf(item); diff --git a/Src/Asp.Net/SqlSugar/Interface/IDbFirst.cs b/Src/Asp.Net/SqlSugar/Interface/IDbFirst.cs index 53978fccf..0cc4302a2 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IDbFirst.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IDbFirst.cs @@ -15,11 +15,12 @@ namespace SqlSugar IDbFirst SettingNamespaceTemplate(Func func); RazorFirst UseRazorAnalysis(string razorClassString, string classNamespace = "Models"); IDbFirst IsCreateAttribute(bool isCreateAttribute = true); - IDbFirst IsCreateDefaultValue(bool isCreateDefaultValue=true); + IDbFirst IsCreateDefaultValue(bool isCreateDefaultValue = true); IDbFirst Where(params string[] objectNames); - IDbFirst Where(Func func); + IDbFirst Where(Func func); + IDbFirst WhereColumns(Func func); IDbFirst Where(DbObjectType dbObjectType); - void CreateClassFile(string directoryPath, string nameSpace = "Models"); + void CreateClassFile(string directoryPath, string nameSpace = "Models"); Dictionary ToClassStringList(string nameSpace = "Models"); void Init(); } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/Demo/DemoD_DbFirst.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/Demo/DemoD_DbFirst.cs index db57e0938..ae84773e2 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/Demo/DemoD_DbFirst.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/Demo/DemoD_DbFirst.cs @@ -65,7 +65,7 @@ namespace OrmTest } db.DbFirst.IsCreateAttribute().CreateClassFile("c:\\Demo\\8", "Models"); - + db.DbFirst.WhereColumns(it => it.ToUpper()!="ID").CreateClassFile("c:\\Demo\\9", "Models"); //Use Razor Template //db.DbFirst.UseRazorAnalysis(RazorFirst.DefaultRazorClassTemplate).CreateClassFile(""); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs index 368889249..99c196aa8 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs @@ -19,6 +19,7 @@ namespace SqlSugar private string Namespace { get; set; } private bool IsAttribute { get; set; } private bool IsDefaultValue { get; set; } + private Func WhereColumnsfunc; private ISqlBuilder SqlBuilder { get @@ -89,13 +90,13 @@ namespace SqlSugar this.PropertyTemplate = func(this.PropertyTemplate); return this; } - public RazorFirst UseRazorAnalysis(string razorClassTemplate,string classNamespace="Models" ) + public RazorFirst UseRazorAnalysis(string razorClassTemplate, string classNamespace = "Models") { if (razorClassTemplate == null) { razorClassTemplate = ""; } - razorClassTemplate=razorClassTemplate.Replace("@Model.Namespace", classNamespace); + razorClassTemplate = razorClassTemplate.Replace("@Model.Namespace", classNamespace); var result = new RazorFirst(); if (this.Context.CurrentConnectionConfig.ConfigureExternalServices?.RazorService != null) { @@ -108,7 +109,7 @@ namespace SqlSugar var columns = this.Context.DbMaintenance.GetColumnInfosByTableName(item.Name, false); RazorTableInfo table = new RazorTableInfo() { - Columns = columns.Select(it => new RazorColumnInfo() + Columns = columns.Where(it => WhereColumnsfunc == null || WhereColumnsfunc(it.DbColumnName)).Select(it => new RazorColumnInfo() { ColumnDescription = it.ColumnDescription, DataType = it.DataType, @@ -124,7 +125,7 @@ namespace SqlSugar }; foreach (var col in table.Columns) { - col.DataType = GetPropertyTypeName(columns.First(it=>it.DbColumnName==col.DbColumnName)); + col.DataType = GetPropertyTypeName(columns.First(it => it.DbColumnName == col.DbColumnName)); } razorList.Add(table); } @@ -167,6 +168,13 @@ namespace SqlSugar return this; } + public IDbFirst WhereColumns(Func func) + { + WhereColumnsfunc = func; + return this; + } + + public IDbFirst Where(params string[] objectNames) { if (objectNames.HasValue()) @@ -235,7 +243,7 @@ namespace SqlSugar classText = classText.Replace(DbFirstTemplate.KeySugarTable, IsAttribute ? string.Format(DbFirstTemplate.ValueSugarTable, tableInfo.Name) : null); if (columns.HasValue()) { - foreach (var item in columns) + foreach (var item in columns.Where(it => WhereColumnsfunc == null || WhereColumnsfunc(it.DbColumnName))) { var isLast = columns.Last() == item; var index = columns.IndexOf(item); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IDbFirst.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IDbFirst.cs index 53978fccf..977afe120 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IDbFirst.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IDbFirst.cs @@ -18,6 +18,7 @@ namespace SqlSugar IDbFirst IsCreateDefaultValue(bool isCreateDefaultValue=true); IDbFirst Where(params string[] objectNames); IDbFirst Where(Func func); + IDbFirst WhereColumns(Func func); IDbFirst Where(DbObjectType dbObjectType); void CreateClassFile(string directoryPath, string nameSpace = "Models"); Dictionary ToClassStringList(string nameSpace = "Models"); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj index 76e73fc88..fe7d6870c 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 5.0.0.13 + 5.0.0.14 sun_kai_xuan https://github.com/sunkaixuan/SqlSugar