From c8596c6815a24970edb048a2b18f787ceb4d91fa Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 9 Sep 2024 09:01:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=97=A7=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{AutoPowershell.ps1 => AutoTemplatel.ps1} | 2 +- IRaCIS.Core.Test/DbHelper.ttinclude | 324 ------------------ IRaCIS.Core.Test/IRaCIS.Core.Test.csproj | 46 --- IRaCIS.Core.Test/ModelAuto.ttinclude | 115 ------- .../TT_Template/IRaCIS .Core.IServiceAsync.cs | 10 - .../TT_Template/IRaCIS .Core.IServiceAsync.tt | 75 ---- .../TT_Template/IRaCIS .Core.ServiceAsync.cs | 9 - .../TT_Template/IRaCIS .Core.ServiceAsync.tt | 118 ------- .../TT_Template/IRaCIS.Core.Dto.cs | 8 - .../TT_Template/IRaCIS.Core.Dto.tt | 86 ----- .../TT_Template/IRaCIS.Core.Entity.cs | 3 - .../TT_Template/IRaCIS.Core.Entity.tt | 65 ---- IRaCIS.Core.Test/模板使用说明 | 10 +- 13 files changed, 7 insertions(+), 864 deletions(-) rename IRaCIS.Core.Test/{AutoPowershell.ps1 => AutoTemplatel.ps1} (88%) delete mode 100644 IRaCIS.Core.Test/DbHelper.ttinclude delete mode 100644 IRaCIS.Core.Test/ModelAuto.ttinclude delete mode 100644 IRaCIS.Core.Test/TT_Template/IRaCIS .Core.IServiceAsync.cs delete mode 100644 IRaCIS.Core.Test/TT_Template/IRaCIS .Core.IServiceAsync.tt delete mode 100644 IRaCIS.Core.Test/TT_Template/IRaCIS .Core.ServiceAsync.cs delete mode 100644 IRaCIS.Core.Test/TT_Template/IRaCIS .Core.ServiceAsync.tt delete mode 100644 IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Dto.cs delete mode 100644 IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Dto.tt delete mode 100644 IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Entity.cs delete mode 100644 IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Entity.tt diff --git a/IRaCIS.Core.Test/AutoPowershell.ps1 b/IRaCIS.Core.Test/AutoTemplatel.ps1 similarity index 88% rename from IRaCIS.Core.Test/AutoPowershell.ps1 rename to IRaCIS.Core.Test/AutoTemplatel.ps1 index 2dd9c1823..241c41120 100644 --- a/IRaCIS.Core.Test/AutoPowershell.ps1 +++ b/IRaCIS.Core.Test/AutoTemplatel.ps1 @@ -19,7 +19,7 @@ Write-Host $tablesForScaffold Write-Host "ִ Scaffold-DbContext..." #dotnet ef dbcontext scaffold "Server=106.14.89.110,1435;Database=Test_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true" Microsoft.EntityFrameworkCore.SqlServer -p IRaCIS.Core.Test -d -o GenerateFolder -c "TempContext" $tablesForScaffold -$scaffoldCommand = "dotnet ef dbcontext scaffold `"Server=106.14.89.110,1435;Database=Test_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true`" Microsoft.EntityFrameworkCore.SqlServer -p IRaCIS.Core.Test -d -o GenerateFolder -c `"TempContext`" $tablesForScaffold" +$scaffoldCommand = "dotnet ef dbcontext scaffold `"Server=106.14.89.110,1435;Database=Test_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true`" Microsoft.EntityFrameworkCore.SqlServer -p IRaCIS.Core.Test -d -o GenerateContextModelFolder -c `"TempContext`" $tablesForScaffold" Invoke-Expression $scaffoldCommand diff --git a/IRaCIS.Core.Test/DbHelper.ttinclude b/IRaCIS.Core.Test/DbHelper.ttinclude deleted file mode 100644 index cc5fddb73..000000000 --- a/IRaCIS.Core.Test/DbHelper.ttinclude +++ /dev/null @@ -1,324 +0,0 @@ -<#+ - public class config - { - public static readonly string ConnectionString = "Server=106.14.89.110,1435;Database=Test_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true"; - public static readonly string DbDatabase = "Test_IRC"; - //ַ,ƴ - public static readonly string TableName = "UserFeedBack"; - //ļ service Ƿҳ - } -#> -<#+ - public class DbHelper - { - #region GetDbTables - - public static List GetDbTablesNew(string connectionString, string database,string tables = null) - { - if (!string.IsNullOrEmpty(tables)) - { - tables = string.Format(" and obj.name in ('{0}')", tables.Replace(",", "','")); - } - string sql = string.Format(@"SELECT - obj.name tablename - from {0}.sys.objects obj - inner join {0}.dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1 - INNER JOIN {0}.sys.schemas schem ON obj.schema_id=schem.schema_id - left join {0}.sys.extended_properties g ON (obj.object_id = g.major_id AND g.minor_id = 0 AND g.name= 'MS_Description') - where type='U' {1} - order by obj.name", database,tables); - DataTable dt = GetDataTable(connectionString, sql); - return dt.Rows.Cast().Select(row =>row.Field("tablename")).ToList(); - } - - public static List GetDbTables(string connectionString, string database, string tables = null) - { - - if (!string.IsNullOrEmpty(tables)) - { - tables = string.Format(" and obj.name in ('{0}')", tables.Replace(",", "','")); - } - #region SQL - string sql = string.Format(@"SELECT - obj.name tablename, - schem.name schemname, - idx.rows, - CAST - ( - CASE - WHEN (SELECT COUNT(1) FROM sys.indexes WHERE object_id= obj.OBJECT_ID AND is_primary_key=1) >=1 THEN 1 - ELSE 0 - END - AS BIT) HasPrimaryKey - from {0}.sys.objects obj - inner join {0}.dbo.sysindexes idx on obj.object_id=idx.id and idx.indid<=1 - INNER JOIN {0}.sys.schemas schem ON obj.schema_id=schem.schema_id - where type='U' {1} - order by obj.name", database, tables); - #endregion - DataTable dt = GetDataTable(connectionString, sql); - return dt.Rows.Cast().Select(row => new DbTable - { - TableName = row.Field("tablename"), - SchemaName = row.Field("schemname"), - Rows = row.Field("rows"), - HasPrimaryKey = row.Field("HasPrimaryKey") - }).ToList(); - } - #endregion - - #region GetDbColumns - - public static List GetDbColumns(string connectionString, string database, string tableName, string schema = "dbo") - { - #region SQL - string sql = string.Format(@" - WITH indexCTE AS - ( - SELECT - ic.column_id, - ic.index_column_id, - ic.object_id - FROM {0}.sys.indexes idx - INNER JOIN {0}.sys.index_columns ic ON idx.index_id = ic.index_id AND idx.object_id = ic.object_id - WHERE idx.object_id =OBJECT_ID(@tableName) AND idx.is_primary_key=1 - ) - select - colm.column_id ColumnID, - CAST(CASE WHEN indexCTE.column_id IS NULL THEN 0 ELSE 1 END AS BIT) IsPrimaryKey, - colm.name ColumnName, - systype.name ColumnType, - colm.is_identity IsIdentity, - colm.is_nullable IsNullable, - cast(colm.max_length as int) ByteLength, - ( - case - when systype.name='nvarchar' and colm.max_length>0 then colm.max_length/2 - when systype.name='nchar' and colm.max_length>0 then colm.max_length/2 - when systype.name='ntext' and colm.max_length>0 then colm.max_length/2 - else colm.max_length - end - ) CharLength, - cast(colm.precision as int) Precision, - cast(colm.scale as int) Scale, - prop.value Remark - from {0}.sys.columns colm - inner join {0}.sys.types systype on colm.system_type_id=systype.system_type_id and colm.user_type_id=systype.user_type_id - left join {0}.sys.extended_properties prop on colm.object_id=prop.major_id and colm.column_id=prop.minor_id - LEFT JOIN indexCTE ON colm.column_id=indexCTE.column_id AND colm.object_id=indexCTE.object_id - where colm.object_id=OBJECT_ID(@tableName) - order by colm.column_id", database); - #endregion - SqlParameter param = new SqlParameter("@tableName", SqlDbType.NVarChar, 100) { Value = string.Format("{0}.{1}.{2}", database, schema, tableName) }; - DataTable dt = GetDataTable(connectionString, sql, param); - return dt.Rows.Cast().Select(row => new DbColumn() - { - ColumnID = row.Field("ColumnID"), - IsPrimaryKey = row.Field("IsPrimaryKey"), - ColumnName = row.Field("ColumnName"), - ColumnType = row.Field("ColumnType"), - IsIdentity = row.Field("IsIdentity"), - IsNullable = row.Field("IsNullable"), - ByteLength = row.Field("ByteLength"), - CharLength = row.Field("CharLength"), - Precision=row.Field("Precision"), - Scale = row.Field("Scale"), - Remark = row["Remark"].ToString() - }).ToList(); - } - - #endregion - - #region GetDataTable - - public static DataTable GetDataTable(string connectionString, string commandText, params SqlParameter[] parms) - { - using (SqlConnection connection = new SqlConnection(connectionString)) - { - SqlCommand command = connection.CreateCommand(); - command.CommandText = commandText; - command.Parameters.AddRange(parms); - SqlDataAdapter adapter = new SqlDataAdapter(command); - - DataTable dt = new DataTable(); - adapter.Fill(dt); - - return dt; - } - } - - #endregion - - #region GetPrimaryKey - public static string GetPrimaryKey(List dbColumns) - { - string primaryKey = string.Empty; - if (dbColumns!=null&&dbColumns.Count>0) - { - foreach (var item in dbColumns) - { - if (item.IsPrimaryKey==true) - { - primaryKey = item.ColumnName; - } - } - } - return primaryKey; - } - #endregion - } - - #region DbTable - public sealed class DbTable - { - public string TableName { get; set; } - public string SchemaName { get; set; } - public int Rows { get; set; } - - public bool HasPrimaryKey { get; set; } - } - #endregion - - #region DbColumn - - public sealed class DbColumn - { - - public int ColumnID { get; set; } - - - public bool IsPrimaryKey { get; set; } - - - public string ColumnName { get; set; } - - - public string ColumnType { get; set; } - - - public string CSharpType - { - get - { - return SqlServerDbTypeMap.MapCsharpType(ColumnType); - } - } - - /// - /// - /// - public Type CommonType - { - get - { - return SqlServerDbTypeMap.MapCommonType(ColumnType); - } - } - - public int ByteLength { get; set; } - - public int CharLength { get; set; } - - public int Precision{get;set;} - public int Scale { get; set; } - - public bool IsIdentity { get; set; } - - public bool IsNullable { get; set; } - - public string Remark { get; set; } - } - #endregion - - #region SqlServerDbTypeMap - - public class SqlServerDbTypeMap - { - public static string MapCsharpType(string dbtype) - { - if (string.IsNullOrEmpty(dbtype)) return dbtype; - dbtype = dbtype.ToLower(); - string csharpType = "object"; - switch (dbtype) - { - case "bigint": csharpType = "long"; break; - case "binary": csharpType = "byte[]"; break; - case "bit": csharpType = "bool"; break; - case "char": csharpType = "string"; break; - case "date": csharpType = "DateTime"; break; - case "datetime": csharpType = "DateTime"; break; - case "datetime2": csharpType = "DateTime"; break; - case "datetimeoffset": csharpType = "DateTimeOffset"; break; - case "decimal": csharpType = "decimal"; break; - case "float": csharpType = "double"; break; - case "image": csharpType = "byte[]"; break; - case "int": csharpType = "int"; break; - case "money": csharpType = "decimal"; break; - case "nchar": csharpType = "string"; break; - case "ntext": csharpType = "string"; break; - case "numeric": csharpType = "decimal"; break; - case "nvarchar": csharpType = "string"; break; - case "real": csharpType = "Single"; break; - case "smalldatetime": csharpType = "DateTime"; break; - case "smallint": csharpType = "short"; break; - case "smallmoney": csharpType = "decimal"; break; - case "sql_variant": csharpType = "object"; break; - case "sysname": csharpType = "object"; break; - case "text": csharpType = "string"; break; - case "time": csharpType = "TimeSpan"; break; - case "timestamp": csharpType = "byte[]"; break; - case "tinyint": csharpType = "byte"; break; - case "uniqueidentifier": csharpType = "Guid"; break; - case "varbinary": csharpType = "byte[]"; break; - case "varchar": csharpType = "string"; break; - case "xml": csharpType = "string"; break; - default: csharpType = "object"; break; - } - return csharpType; - } - - public static Type MapCommonType(string dbtype) - { - if (string.IsNullOrEmpty(dbtype)) return Type.Missing.GetType(); - dbtype = dbtype.ToLower(); - Type commonType = typeof(object); - switch (dbtype) - { - case "bigint": commonType = typeof(long); break; - case "binary": commonType = typeof(byte[]); break; - case "bit": commonType = typeof(bool); break; - case "char": commonType = typeof(string); break; - case "date": commonType = typeof(DateTime); break; - case "datetime": commonType = typeof(DateTime); break; - case "datetime2": commonType = typeof(DateTime); break; - case "datetimeoffset": commonType = typeof(DateTimeOffset); break; - case "decimal": commonType = typeof(decimal); break; - case "float": commonType = typeof(double); break; - case "image": commonType = typeof(byte[]); break; - case "int": commonType = typeof(int); break; - case "money": commonType = typeof(decimal); break; - case "nchar": commonType = typeof(string); break; - case "ntext": commonType = typeof(string); break; - case "numeric": commonType = typeof(decimal); break; - case "nvarchar": commonType = typeof(string); break; - case "real": commonType = typeof(Single); break; - case "smalldatetime": commonType = typeof(DateTime); break; - case "smallint": commonType = typeof(short); break; - case "smallmoney": commonType = typeof(decimal); break; - case "sql_variant": commonType = typeof(object); break; - case "sysname": commonType = typeof(object); break; - case "text": commonType = typeof(string); break; - case "time": commonType = typeof(TimeSpan); break; - case "timestamp": commonType = typeof(byte[]); break; - case "tinyint": commonType = typeof(byte); break; - case "uniqueidentifier": commonType = typeof(Guid); break; - case "varbinary": commonType = typeof(byte[]); break; - case "varchar": commonType = typeof(string); break; - case "xml": commonType = typeof(string); break; - default: commonType = typeof(object); break; - } - return commonType; - } - } - #endregion - #> \ No newline at end of file diff --git a/IRaCIS.Core.Test/IRaCIS.Core.Test.csproj b/IRaCIS.Core.Test/IRaCIS.Core.Test.csproj index 9c1833157..77dd99306 100644 --- a/IRaCIS.Core.Test/IRaCIS.Core.Test.csproj +++ b/IRaCIS.Core.Test/IRaCIS.Core.Test.csproj @@ -46,58 +46,12 @@ Always - - IRaCIS .Core.ServiceAsync.cs - TextTemplatingFileGenerator - - - IRaCIS .Core.IServiceAsync.cs - TextTemplatingFileGenerator - - - TextTemplatingFileGenerator - IRaCIS.Core.Dto.cs - - - TextTemplatingFileGenerator - IRaCIS.Core.Entity.cs - - - - IRaCIS .Core.IServiceAsync.tt - True - True - - - IRaCIS .Core.ServiceAsync.tt - True - True - - - True - True - IRaCIS.Core.Dto.tt - - - True - True - IRaCIS.Core.Entity.tt - - - - - - - - - - diff --git a/IRaCIS.Core.Test/ModelAuto.ttinclude b/IRaCIS.Core.Test/ModelAuto.ttinclude deleted file mode 100644 index b7ab0a374..000000000 --- a/IRaCIS.Core.Test/ModelAuto.ttinclude +++ /dev/null @@ -1,115 +0,0 @@ -<#@ assembly name="System.Core"#> -<#@ assembly name="Microsoft.VisualStudio.Interop"#> -<#@ import namespace="System.Collections.Generic"#> -<#@ import namespace="System.IO"#> -<#@ import namespace="System.Text"#> -<#@ import namespace="Microsoft.VisualStudio.TextTemplating"#> -<#+ -class Manager -{ - public struct Block { - public int Start, Length; - public String Name,OutputPath; - } - - public List blocks = new List(); - public Block currentBlock; - public Block footerBlock = new Block(); - public Block headerBlock = new Block(); - public ITextTemplatingEngineHost host; - public ManagementStrategy strategy; - public StringBuilder template; - public Manager(ITextTemplatingEngineHost host, StringBuilder template, bool commonHeader) { - this.host = host; - this.template = template; - strategy = ManagementStrategy.Create(host); - } - public void StartBlock(String name,String outputPath) { - currentBlock = new Block { Name = name, Start = template.Length ,OutputPath=outputPath}; - } - - public void StartFooter() { - footerBlock.Start = template.Length; - } - - public void EndFooter() { - footerBlock.Length = template.Length - footerBlock.Start; - } - - public void StartHeader() { - headerBlock.Start = template.Length; - } - - public void EndHeader() { - headerBlock.Length = template.Length - headerBlock.Start; - } - - public void EndBlock() { - currentBlock.Length = template.Length - currentBlock.Start; - blocks.Add(currentBlock); - } - public void Process(bool split) { - String header = template.ToString(headerBlock.Start, headerBlock.Length); - String footer = template.ToString(footerBlock.Start, footerBlock.Length); - blocks.Reverse(); - foreach(Block block in blocks) { - String fileName = Path.Combine(block.OutputPath, block.Name); - if (split) { - String content = header + template.ToString(block.Start, block.Length) + footer; - strategy.CreateFile(fileName, content); - template.Remove(block.Start, block.Length); - } else { - strategy.DeleteFile(fileName); - } - } - } -} -class ManagementStrategy -{ - internal static ManagementStrategy Create(ITextTemplatingEngineHost host) { - return (host is IServiceProvider) ? new VSManagementStrategy(host) : new ManagementStrategy(host); - } - - internal ManagementStrategy(ITextTemplatingEngineHost host) { } - - internal virtual void CreateFile(String fileName, String content) { - File.WriteAllText(fileName, content); - } - - internal virtual void DeleteFile(String fileName) { - if (File.Exists(fileName)) - File.Delete(fileName); - } -} - -class VSManagementStrategy : ManagementStrategy -{ - private EnvDTE.ProjectItem templateProjectItem; - - internal VSManagementStrategy(ITextTemplatingEngineHost host) : base(host) { - IServiceProvider hostServiceProvider = (IServiceProvider)host; - if (hostServiceProvider == null) - throw new ArgumentNullException("Could not obtain hostServiceProvider"); - - EnvDTE.DTE dte = (EnvDTE.DTE)hostServiceProvider.GetCOMService(typeof(EnvDTE.DTE)); - if (dte == null) - throw new ArgumentNullException("Could not obtain DTE from host"); - - templateProjectItem = dte.Solution.FindProjectItem(host.TemplateFile); - } - internal override void CreateFile(String fileName, String content) { - base.CreateFile(fileName, content); - //((EventHandler)delegate { templateProjectItem.ProjectItems.AddFromFile(fileName); }).BeginInvoke(null, null, null, null); - } - internal override void DeleteFile(String fileName) { - ((EventHandler)delegate { FindAndDeleteFile(fileName); }).BeginInvoke(null, null, null, null); - } - private void FindAndDeleteFile(String fileName) { - foreach(EnvDTE.ProjectItem projectItem in templateProjectItem.ProjectItems) { - if (projectItem.get_FileNames(0) == fileName) { - projectItem.Delete(); - return; - } - } - } -}#> \ No newline at end of file diff --git a/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.IServiceAsync.cs b/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.IServiceAsync.cs deleted file mode 100644 index fe5554c90..000000000 --- a/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.IServiceAsync.cs +++ /dev/null @@ -1,10 +0,0 @@ - - -//在这里设置 isPage 是否生成分页的还是不分页 - - - - - - - diff --git a/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.IServiceAsync.tt b/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.IServiceAsync.tt deleted file mode 100644 index c47056fd8..000000000 --- a/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.IServiceAsync.tt +++ /dev/null @@ -1,75 +0,0 @@ -<#@ template debug="false" hostspecific="true" language="C#" #> -<#@ output extension=".cs" #> -<#@ assembly name="System.Core.dll" #> -<#@ assembly name="System.Data.dll" #> -<#@ assembly name="System.Data.DataSetExtensions.dll" #> -<#@ assembly name="System.Xml.dll" #> -<#@ import namespace="System" #> -<#@ import namespace="System.Xml" #> -<#@ import namespace="System.Linq" #> -<#@ import namespace="System.Data" #> -<#@ import namespace="System.Data.SqlClient" #> -<#@ import namespace="System.Collections.Generic" #> -<#@ import namespace="System.IO" #> -<#@ include file="$(ProjectDir)DbHelper.ttinclude" #> -<#@ include file="$(ProjectDir)ModelAuto.ttinclude" #> -<# var manager = new Manager(Host, GenerationEnvironment, true); #> - -//在这里设置 isPage 是否生成分页的还是不分页 - -<# - var isPage=true; - #> - -<# - var OutputPath1 =Path.GetDirectoryName(Host.TemplateFile+".."); - OutputPath1=Path.Combine(OutputPath1,"IServices_New"); - if (!Directory.Exists(OutputPath1)) - { - Directory.CreateDirectory(OutputPath1); - } -#> - - -<# foreach (var item in DbHelper.GetDbTablesNew(config.ConnectionString, config.DbDatabase,config.TableName)) - { - var tableName=item.ToString(); - manager.StartBlock("I"+tableName+"Service"+".cs",OutputPath1);//文件名 -#> -//-------------------------------------------------------------------- -// 此代码由T4模板自动生成 byzhouhang 20210918 -// 生成时间 <#=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")#> -// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 -//-------------------------------------------------------------------- - -using IRaCIS.Core.Application.ViewModel; -namespace IRaCIS.Core.Application.Interfaces -{ - /// - /// I<#=tableName#>Service - /// - public interface I<#=tableName#>Service - { - - <# if(isPage){#> - TaskView>> Get<#=tableName#>List(<#=tableName#>Query inQuery); - <# } else {#> - - TaskView>> Get<#=tableName#>List(<#=tableName#>Query inQuery); - <# }#> - - Task AddOrUpdate<#=tableName#>(<#=tableName#>AddOrEdit addOrEdit<#=tableName#>); - - Task Delete<#=tableName#>(Guid <#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Id); - - - } -} -<# - manager.EndBlock(); - } - manager.Process(true); - #> - - - diff --git a/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.ServiceAsync.cs b/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.ServiceAsync.cs deleted file mode 100644 index 2faa758b0..000000000 --- a/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.ServiceAsync.cs +++ /dev/null @@ -1,9 +0,0 @@ - - - - -//在这里设置 isPage 是否生成分页的还是不分页 - - - - diff --git a/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.ServiceAsync.tt b/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.ServiceAsync.tt deleted file mode 100644 index effdadf11..000000000 --- a/IRaCIS.Core.Test/TT_Template/IRaCIS .Core.ServiceAsync.tt +++ /dev/null @@ -1,118 +0,0 @@ -<#@ template debug="false" hostspecific="true" language="C#" #> -<#@ output extension=".cs" #> -<#@ assembly name="System.Core.dll" #> -<#@ assembly name="System.Data.dll" #> -<#@ assembly name="System.Data.DataSetExtensions.dll" #> -<#@ assembly name="System.Xml.dll" #> -<#@ import namespace="System" #> -<#@ import namespace="System.Xml" #> -<#@ import namespace="System.Linq" #> -<#@ import namespace="System.Data" #> -<#@ import namespace="System.Data.SqlClient" #> -<#@ import namespace="System.Collections.Generic" #> -<#@ import namespace="System.IO" #> - -<#@ include file="$(ProjectDir)DbHelper.ttinclude" #> -<#@ include file="$(ProjectDir)ModelAuto.ttinclude" #> -<# var manager = new Manager(Host, GenerationEnvironment, true); #> - - -//在这里设置 isPage 是否生成分页的还是不分页 - -<# - var isPage=true; - #> - -<# - var OutputPath1 =Path.GetDirectoryName(Host.TemplateFile+".."); - OutputPath1=Path.Combine(OutputPath1,"Services_New"); - if (!Directory.Exists(OutputPath1)) - { - Directory.CreateDirectory(OutputPath1); - } -#> - - -<# foreach (var item in DbHelper.GetDbTablesNew(config.ConnectionString, config.DbDatabase,config.TableName)) - { - var tableName=item.ToString(); - manager.StartBlock(tableName+"Service"+".cs",OutputPath1);//文件名 -#> -//-------------------------------------------------------------------- -// 此代码由T4模板自动生成 byzhouhang 20210918 -// 生成时间 <#=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")#> -// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 -//-------------------------------------------------------------------- - -using IRaCIS.Core.Domain.Models; -using Microsoft.AspNetCore.Mvc; -using IRaCIS.Core.Application.Interfaces; -using IRaCIS.Core.Application.ViewModel; -namespace IRaCIS.Core.Application.Service -{ - /// - /// <#=tableName#>Service - /// - [ ApiExplorerSettings(GroupName = "Test")] - public class <#=tableName#>Service(IRepository<<#=tableName#>> _<#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Repository): BaseService, I<#=tableName#>Service - { - - <# if(isPage){#> - [HttpPost] - public async TaskView>> Get<#=tableName#>List(<#=tableName#>Query inQuery) - { - - var <#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Queryable = - - _<#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Repository - .ProjectTo<<#=tableName#>View>(_mapper.ConfigurationProvider); - - var pageList= await <#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Queryable.ToPagedListAsync(inQuery); - - return pageList; - } - <# } else {#> - [HttpPost] - public async TaskView>> Get<#=tableName#>List(<#=tableName#>Query inQuery) - { - - - var <#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Queryable = _<#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Repository - .ProjectTo<<#=tableName#>View>(_mapper.ConfigurationProvider); - - return await <#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Queryable.ToListAsync(); - } - <# }#> - - - public async Task AddOrUpdate<#=tableName#>(<#=tableName#>AddOrEdit addOrEdit<#=tableName#>) - { - // 在此处拷贝automapper 映射 - - - CreateMap<<#=tableName#>, <#=tableName#>View>(); - // CreateMap< <#=tableName#>,<#=tableName#>AddOrEdit>().ReverseMap(); - - - var entity = await _<#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Repository.InsertOrUpdateAsync(addOrEdit<#=tableName#>, true); - - return ResponseOutput.Ok(entity.Id.ToString()); - - } - - - [HttpDelete("{<#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Id:guid}")] - public async Task Delete<#=tableName#>(Guid <#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Id) - { - var success = await _<#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Repository.DeleteFromQueryAsync(t => t.Id == <#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Id,true); - return ResponseOutput.Ok(); - } - - - } -} -<# - manager.EndBlock(); - } - manager.Process(true); - #> diff --git a/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Dto.cs b/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Dto.cs deleted file mode 100644 index cb03b0051..000000000 --- a/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Dto.cs +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Dto.tt b/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Dto.tt deleted file mode 100644 index 128807500..000000000 --- a/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Dto.tt +++ /dev/null @@ -1,86 +0,0 @@ -<#@ template debug="false" hostspecific="true" language="C#" #> -<#@ output extension=".cs" #> -<#@ assembly name="System.Core.dll" #> -<#@ assembly name="System.Data.dll" #> -<#@ assembly name="System.Data.DataSetExtensions.dll" #> -<#@ assembly name="System.Xml.dll" #> -<#@ import namespace="System" #> -<#@ import namespace="System.Xml" #> -<#@ import namespace="System.Linq" #> -<#@ import namespace="System.Data" #> -<#@ import namespace="System.Data.SqlClient" #> -<#@ import namespace="System.Collections.Generic" #> -<#@ import namespace="System.IO" #> -<#@ include file="$(ProjectDir)DbHelper.ttinclude" #> -<#@ include file="$(ProjectDir)ModelAuto.ttinclude" #> -<# var manager = new Manager(Host, GenerationEnvironment, true); #> - - - -<# - var OutputPath1 =Path.GetDirectoryName(Host.TemplateFile+".."); - OutputPath1=Path.Combine(OutputPath1,"Dto_New"); - if (!Directory.Exists(OutputPath1)) - { - Directory.CreateDirectory(OutputPath1); - } -#> - - -<# foreach (var item in DbHelper.GetDbTablesNew(config.ConnectionString, config.DbDatabase,config.TableName)) - { - var tableName=item.ToString(); - manager.StartBlock(tableName+"ViewModel"+".cs",OutputPath1);//文件名 -#> -//-------------------------------------------------------------------- -// 此代码由T4模板自动生成 byzhouhang 20210918 -// 生成时间 <#=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")#> -// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 -//-------------------------------------------------------------------- -using System; -using IRaCIS.Core.Domain.Share; -using System.Collections.Generic; -namespace IRaCIS.Core.Application.ViewModel -{ - <# var excludedColumns = new[] { "CreateUserId", "UpdateUserId", "CreateTime", "UpdateTime" };#> - - /// <#=tableName#>View 列表视图 - public class <#=tableName#>View:<#=tableName#>AddOrEdit - { - <# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName)){#> - <# if (excludedColumns.Contains(column.ColumnName)){ #> - public <#= column.CSharpType#><# if(column.CommonType.IsValueType && column.IsNullable){#>?<#}#> <#=column.ColumnName#> { get; set; } - <# }#> - <# }#> - } - - ///<#=tableName#>Query 列表查询参数 - public class <#=tableName#>Query - { - <# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName)){#><# if(column.CSharpType=="string"){#> - public <#= column.CSharpType#><# if(column.CommonType.IsValueType && column.IsNullable){#>?<#}#> <#=column.ColumnName#> { get; set; } - <# }#> - <# }#> - } - - /// <#=tableName#>AddOrEdit 添加编辑 - public class <#=tableName#>AddOrEdit - { - <# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName)){#> - <# if (!excludedColumns.Contains(column.ColumnName)){ #> - public <#= column.CSharpType#><# if(column.CommonType.IsValueType && column.IsNullable){#>?<#}#> <#=column.ColumnName#> { get; set; } - <#}#> - <# }#> - } - - -} - - -<# - manager.EndBlock(); - } - manager.Process(true); - #> - - diff --git a/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Entity.cs b/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Entity.cs deleted file mode 100644 index b28b04f64..000000000 --- a/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Entity.cs +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Entity.tt b/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Entity.tt deleted file mode 100644 index aa45fe94b..000000000 --- a/IRaCIS.Core.Test/TT_Template/IRaCIS.Core.Entity.tt +++ /dev/null @@ -1,65 +0,0 @@ -<#@ template debug="false" hostspecific="true" language="C#" #> -<#@ output extension=".cs" #> -<#@ assembly name="System.Core.dll" #> -<#@ assembly name="System.Data.dll" #> -<#@ assembly name="System.Data.DataSetExtensions.dll" #> -<#@ assembly name="System.Xml.dll" #> -<#@ import namespace="System" #> -<#@ import namespace="System.Xml" #> -<#@ import namespace="System.Linq" #> -<#@ import namespace="System.Data" #> -<#@ import namespace="System.Data.SqlClient" #> -<#@ import namespace="System.Collections.Generic" #> -<#@ import namespace="System.IO" #> -<#@ include file="$(ProjectDir)DbHelper.ttinclude" #> -<#@ include file="$(ProjectDir)ModelAuto.ttinclude" #> -<# var manager = new Manager(Host, GenerationEnvironment, true); #> - -<# - var OutputPath1 =Path.GetDirectoryName(Host.TemplateFile+".."); - OutputPath1=Path.Combine(OutputPath1,"Models_New"); - if (!Directory.Exists(OutputPath1)) - { - Directory.CreateDirectory(OutputPath1); - } -#> - -<# foreach (var item in DbHelper.GetDbTablesNew(config.ConnectionString, config.DbDatabase,config.TableName)) - { - var tableName=item.ToString(); - manager.StartBlock(tableName+".cs",OutputPath1);//ļ -#> - -//-------------------------------------------------------------------- -// ˴T4ģԶ byzhouhang 20210918 -// ʱ <#=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")#> -// ԴļĸĿܻᵼ²ȷΪɴ룬ЩĽᶪʧ -using System; -using IRaCIS.Core.Domain.Share; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using System.ComponentModel; -using Microsoft.EntityFrameworkCore; -namespace IRaCIS.Core.Domain.Models -{ - - [Comment("<#=tableName#>")] - [Table("<#=tableName#>")] - public class <#=tableName#> : BaseFullAuditEntity - { - <# var excludedColumns = new[] { "CreateUserId", "Id", "UpdateUserId", "CreateTime", "UpdateTime", "DeleteUserId", "IsDeleted", "DeletedTime" };#> - <# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName)){ #> - <# if (!excludedColumns.Contains(column.ColumnName)){ #> - [Comment("<#= column.Remark == "" ? "" : column.Remark.Replace("\r\n"," ") #>")] - public <#= column.CSharpType#><# if(column.CommonType.IsValueType && column.IsNullable){#>?<#}#> <#=column.ColumnName#> { get; set; } - <#}#> - <#}#> - } - - public virtual DbSet<<#=tableName#>> <#=tableName#> { get; set; } -} -<# - manager.EndBlock(); - } - manager.Process(true); - #> \ No newline at end of file diff --git a/IRaCIS.Core.Test/模板使用说明 b/IRaCIS.Core.Test/模板使用说明 index 599a537ba..d8aee69ec 100644 --- a/IRaCIS.Core.Test/模板使用说明 +++ b/IRaCIS.Core.Test/模板使用说明 @@ -1,5 +1,5 @@ 优化背景: - 1、之前我们的从数据库自动生成实体对照模型,依赖于T4模板,同时T4模板里面的获取数据库表、列名的方法都是自己写的,其实没必要,官方有反向生成工具,也是用的T4模板,现在可以自定义了 + 1、之前我们的从数据库自动生成实体对照模型,依赖于T4模板,同时T4模板里面的针对对应数据库获取信息的方法是自己写的,其实没必要,官方有反向生成工具,也是用的T4模板,现在可以自定义了 2、如果我们想用pgsql orcal mysql,按照之前的方法就要针对这些数据库进行适配,太麻烦 3、本身不同数据库官方提供了不同反向工程的库,利用命令行就可以根据数据库的定义生成实体 Microsoft.EntityFrameworkCore.SqlServer mssql @@ -26,10 +26,10 @@ Scaffold-DbContext "连接字符串" 数据库提供程序包 -Project 项目名称 -OutputDir 输出目录 -Context "生成的上下文名称" -DataAnnotations -Tables 表1, 表2 方式1: -Scaffold-DbContext "Server=106.14.89.110,1435;Database=Test_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true" Microsoft.EntityFrameworkCore.SqlServer -Project IRaCIS.Core.Test -OutputDir GenerateFolder -Context "TempContext" -DataAnnotations -Tables Dictionary, Site +Scaffold-DbContext "Server=106.14.89.110,1435;Database=Test_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true" Microsoft.EntityFrameworkCore.SqlServer -Project IRaCIS.Core.Test -OutputDir GenerateContextModelFolder -Context "TempContext" -DataAnnotations -Tables Dictionary, Site 方式2: 多个表 -t Subject -t SubjectVisit -dotnet ef dbcontext scaffold "Server=106.14.89.110,1435;Database=Test_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true" Microsoft.EntityFrameworkCore.SqlServer -p IRaCIS.Core.Test -d -o GenerateFolder -c "TempContext" -t Dictionary -t Site +dotnet ef dbcontext scaffold "Server=106.14.89.110,1435;Database=Test_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true" Microsoft.EntityFrameworkCore.SqlServer -p IRaCIS.Core.Test -d -o GenerateContextModelFolder -c "TempContext" -t Dictionary -t Site 开发者PowerShell || 程序包管理控制台命令行 使用: @@ -39,4 +39,6 @@ dotnet ef dbcontext scaffold "Server=106.14.89.110,1435;Database=Test_IRC;User I 自动脚本方便执行两句脚本: -./IRaCIS.Core.Test/AutoPowershell.ps1 -Tables Dictionary, Site \ No newline at end of file +./IRaCIS.Core.Test/AutoTemplatel.ps1 -Tables Dictionary, Site + +如果不能执行ps1脚本,管理员设置:Set-ExecutionPolicy -ExecutionPolicy RemoteSigned \ No newline at end of file