移除旧的模板
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
e2dd4b2466
commit
c8596c6815
|
@ -19,7 +19,7 @@ Write-Host $tablesForScaffold
|
||||||
Write-Host "正在执行 Scaffold-DbContext..."
|
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
|
#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
|
Invoke-Expression $scaffoldCommand
|
||||||
|
|
||||||
|
|
|
@ -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<string> 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<DataRow>().Select(row =>row.Field<string>("tablename")).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<DbTable> 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<DataRow>().Select(row => new DbTable
|
|
||||||
{
|
|
||||||
TableName = row.Field<string>("tablename"),
|
|
||||||
SchemaName = row.Field<string>("schemname"),
|
|
||||||
Rows = row.Field<int>("rows"),
|
|
||||||
HasPrimaryKey = row.Field<bool>("HasPrimaryKey")
|
|
||||||
}).ToList();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region GetDbColumns
|
|
||||||
|
|
||||||
public static List<DbColumn> 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<DataRow>().Select(row => new DbColumn()
|
|
||||||
{
|
|
||||||
ColumnID = row.Field<int>("ColumnID"),
|
|
||||||
IsPrimaryKey = row.Field<bool>("IsPrimaryKey"),
|
|
||||||
ColumnName = row.Field<string>("ColumnName"),
|
|
||||||
ColumnType = row.Field<string>("ColumnType"),
|
|
||||||
IsIdentity = row.Field<bool>("IsIdentity"),
|
|
||||||
IsNullable = row.Field<bool>("IsNullable"),
|
|
||||||
ByteLength = row.Field<int>("ByteLength"),
|
|
||||||
CharLength = row.Field<int>("CharLength"),
|
|
||||||
Precision=row.Field<int>("Precision"),
|
|
||||||
Scale = row.Field<int>("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<DbColumn> 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
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
|
|
||||||
#>
|
|
|
@ -46,58 +46,12 @@
|
||||||
<None Update="LiquidTemplate\IEntityService.liquid">
|
<None Update="LiquidTemplate\IEntityService.liquid">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
<None Update="TT_Template\IRaCIS .Core.ServiceAsync.tt">
|
|
||||||
<LastGenOutput>IRaCIS .Core.ServiceAsync.cs</LastGenOutput>
|
|
||||||
<Generator>TextTemplatingFileGenerator</Generator>
|
|
||||||
</None>
|
|
||||||
<None Update="TT_Template\IRaCIS .Core.IServiceAsync.tt">
|
|
||||||
<LastGenOutput>IRaCIS .Core.IServiceAsync.cs</LastGenOutput>
|
|
||||||
<Generator>TextTemplatingFileGenerator</Generator>
|
|
||||||
</None>
|
|
||||||
<None Update="TT_Template\IRaCIS.Core.Dto.tt">
|
|
||||||
<Generator>TextTemplatingFileGenerator</Generator>
|
|
||||||
<LastGenOutput>IRaCIS.Core.Dto.cs</LastGenOutput>
|
|
||||||
</None>
|
|
||||||
<None Update="TT_Template\IRaCIS.Core.Entity.tt">
|
|
||||||
<Generator>TextTemplatingFileGenerator</Generator>
|
|
||||||
<LastGenOutput>IRaCIS.Core.Entity.cs</LastGenOutput>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Update="TT_Template\IRaCIS .Core.IServiceAsync.cs">
|
|
||||||
<DependentUpon>IRaCIS .Core.IServiceAsync.tt</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="TT_Template\IRaCIS .Core.ServiceAsync.cs">
|
|
||||||
<DependentUpon>IRaCIS .Core.ServiceAsync.tt</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="TT_Template\IRaCIS.Core.Dto.cs">
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DependentUpon>IRaCIS.Core.Dto.tt</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="TT_Template\IRaCIS.Core.Entity.cs">
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DependentUpon>IRaCIS.Core.Entity.tt</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="TT_Template\Dto_New\" />
|
|
||||||
<Folder Include="TT_Template\IServices_New\" />
|
|
||||||
<Folder Include="TT_Template\Models_New\" />
|
|
||||||
<Folder Include="TT_Template\Services_New\" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Fluid.Core" Version="2.11.1" />
|
<PackageReference Include="Fluid.Core" Version="2.11.1" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.8" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.8" />
|
||||||
|
|
|
@ -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<Block> blocks = new List<Block>();
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}#>
|
|
|
@ -1,10 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
//在这里设置 isPage 是否生成分页的还是不分页
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// I<#=tableName#>Service
|
|
||||||
/// </summary>
|
|
||||||
public interface I<#=tableName#>Service
|
|
||||||
{
|
|
||||||
|
|
||||||
<# if(isPage){#>
|
|
||||||
Task<PageOutput<<#=tableName#>View>> Get<#=tableName#>List(<#=tableName#>Query inQuery);
|
|
||||||
<# } else {#>
|
|
||||||
|
|
||||||
Task<List<<#=tableName#>View>> Get<#=tableName#>List(<#=tableName#>Query inQuery);
|
|
||||||
<# }#>
|
|
||||||
|
|
||||||
Task<IResponseOutput> AddOrUpdate<#=tableName#>(<#=tableName#>AddOrEdit addOrEdit<#=tableName#>);
|
|
||||||
|
|
||||||
Task<IResponseOutput> Delete<#=tableName#>(Guid <#=char.ToLower(tableName[0]) + tableName.Substring(1)#>Id);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
<#
|
|
||||||
manager.EndBlock();
|
|
||||||
}
|
|
||||||
manager.Process(true);
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//在这里设置 isPage 是否生成分页的还是不分页
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// <#=tableName#>Service
|
|
||||||
/// </summary>
|
|
||||||
[ 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 Task<PageOutput<<#=tableName#>View>> 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 Task<List<<#=tableName#>View>> 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<IResponseOutput> 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<IResponseOutput> 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);
|
|
||||||
#>
|
|
|
@ -1,8 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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" };#>
|
|
||||||
|
|
||||||
/// <summary> <#=tableName#>View 列表视图 </summary>
|
|
||||||
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; }
|
|
||||||
<# }#>
|
|
||||||
<# }#>
|
|
||||||
}
|
|
||||||
|
|
||||||
///<summary><#=tableName#>Query 列表查询参数</summary>
|
|
||||||
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; }
|
|
||||||
<# }#>
|
|
||||||
<# }#>
|
|
||||||
}
|
|
||||||
|
|
||||||
///<summary> <#=tableName#>AddOrEdit 添加编辑</summary>
|
|
||||||
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);
|
|
||||||
#>
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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);
|
|
||||||
#>
|
|
|
@ -1,5 +1,5 @@
|
||||||
优化背景:
|
优化背景:
|
||||||
1、之前我们的从数据库自动生成实体对照模型,依赖于T4模板,同时T4模板里面的获取数据库表、列名的方法都是自己写的,其实没必要,官方有反向生成工具,也是用的T4模板,现在可以自定义了
|
1、之前我们的从数据库自动生成实体对照模型,依赖于T4模板,同时T4模板里面的针对对应数据库获取信息的方法是自己写的,其实没必要,官方有反向生成工具,也是用的T4模板,现在可以自定义了
|
||||||
2、如果我们想用pgsql orcal mysql,按照之前的方法就要针对这些数据库进行适配,太麻烦
|
2、如果我们想用pgsql orcal mysql,按照之前的方法就要针对这些数据库进行适配,太麻烦
|
||||||
3、本身不同数据库官方提供了不同反向工程的库,利用命令行就可以根据数据库的定义生成实体
|
3、本身不同数据库官方提供了不同反向工程的库,利用命令行就可以根据数据库的定义生成实体
|
||||||
Microsoft.EntityFrameworkCore.SqlServer mssql
|
Microsoft.EntityFrameworkCore.SqlServer mssql
|
||||||
|
@ -26,10 +26,10 @@
|
||||||
Scaffold-DbContext "连接字符串" 数据库提供程序包 -Project 项目名称 -OutputDir 输出目录 -Context "生成的上下文名称" -DataAnnotations -Tables 表1, 表2
|
Scaffold-DbContext "连接字符串" 数据库提供程序包 -Project 项目名称 -OutputDir 输出目录 -Context "生成的上下文名称" -DataAnnotations -Tables 表1, 表2
|
||||||
|
|
||||||
方式1:
|
方式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
|
方式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 || 程序包管理控制台命令行 使用:
|
开发者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
|
./IRaCIS.Core.Test/AutoTemplatel.ps1 -Tables Dictionary, Site
|
||||||
|
|
||||||
|
如果不能执行ps1脚本,管理员设置:Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
|
Loading…
Reference in New Issue