✨ 支持Oracle库、Oracle库代码生成完善
This commit is contained in:
parent
9be0036b4e
commit
9f587711f0
@ -190,7 +190,6 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
return ToResponse(ResultCode.CUSTOM_ERROR, "导入数据失败");
|
||||
}
|
||||
var path = Path.Combine(WebHostEnvironment.WebRootPath, "data.xlsx");
|
||||
//var sheetNames = MiniExcel.GetSheetNames(path);
|
||||
SeedDataService seedDataService = new();
|
||||
var result = seedDataService.InitSeedData(path, clean);
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
|
||||
@ -153,6 +153,7 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
{
|
||||
throw new CustomException("表不能为空");
|
||||
}
|
||||
var dbType = AppSettings.GetAppConfig(GenConstants.Gen_conn_dbType, 0);
|
||||
string[] tableNames = tables.Split(',', StringSplitOptions.RemoveEmptyEntries);
|
||||
int result = 0;
|
||||
foreach (var tableName in tableNames)
|
||||
@ -160,15 +161,18 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
var tabInfo = _CodeGeneraterService.GetTableInfo(dbName, tableName);
|
||||
if (tabInfo != null)
|
||||
{
|
||||
List<OracleSeq> seqs = new();
|
||||
GenTable genTable = CodeGeneratorTool.InitTable(dbName, HttpContext.GetName(), tableName, tabInfo?.Description);
|
||||
genTable.TableId = GenTableService.ImportGenTable(genTable);
|
||||
|
||||
if (dbType == 3)
|
||||
{
|
||||
seqs = _CodeGeneraterService.GetAllOracleSeqs(dbName);
|
||||
}
|
||||
if (genTable.TableId > 0)
|
||||
{
|
||||
//保存列信息
|
||||
List<DbColumnInfo> dbColumnInfos = _CodeGeneraterService.GetColumnInfo(dbName, tableName);
|
||||
List<GenTableColumn> genTableColumns = CodeGeneratorTool.InitGenTableColumn(genTable, dbColumnInfos);
|
||||
|
||||
List<GenTableColumn> genTableColumns = CodeGeneratorTool.InitGenTableColumn(genTable, dbColumnInfos, seqs);
|
||||
GenTableColumnService.DeleteGenTableColumnByTableName(tableName);
|
||||
GenTableColumnService.InsertGenTableColumn(genTableColumns);
|
||||
genTable.Columns = genTableColumns;
|
||||
@ -264,10 +268,11 @@ namespace ZR.Admin.WebApi.Controllers
|
||||
//自定义路径
|
||||
if (genTableInfo.GenType == "1")
|
||||
{
|
||||
var genPath = genTableInfo.GenPath;
|
||||
string tempPath = WebHostEnvironment.ContentRootPath;
|
||||
var parentPath = tempPath[..tempPath.LastIndexOf(@"\")];
|
||||
//代码生成文件夹路径
|
||||
dto.GenCodePath = genTableInfo.GenPath.IsEmpty() ? parentPath : genTableInfo.GenPath;
|
||||
dto.GenCodePath = (genPath.IsEmpty() || genPath.Equals("/")) ? parentPath : genTableInfo.GenPath;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -1,15 +1,16 @@
|
||||
using Infrastructure;
|
||||
using Infrastructure.Extensions;
|
||||
using Infrastructure.Helper;
|
||||
using SqlSugar;
|
||||
using SqlSugar.IOC;
|
||||
using System.Reflection;
|
||||
using ZR.Admin.WebApi.Framework;
|
||||
using ZR.Model;
|
||||
using ZR.Model.System;
|
||||
|
||||
namespace ZR.Admin.WebApi.Extensions
|
||||
{
|
||||
/// <summary>
|
||||
/// sqlsugar 数据处理
|
||||
/// </summary>
|
||||
public static class DbExtension
|
||||
{
|
||||
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
||||
@ -65,7 +66,7 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
|
||||
if (Configuration["InitDb"].ParseToBool() == true && environment.IsDevelopment())
|
||||
{
|
||||
InitDb();
|
||||
InitTable.InitDb();
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,7 +102,6 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
logger.Info(log);
|
||||
}
|
||||
};
|
||||
|
||||
db.GetConnectionScope(configId).Aop.OnError = (ex) =>
|
||||
{
|
||||
var pars = db.Utilities.SerializeObject(((SugarParameter[])ex.Parametres).ToDictionary(it => it.ParameterName, it => it.Value));
|
||||
@ -109,10 +109,10 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
string sql = "【错误SQL】" + UtilMethods.GetSqlString(config.DbType, ex.Sql, (SugarParameter[])ex.Parametres) + "\r\n";
|
||||
logger.Error(ex, $"{sql}\r\n{ex.Message}\r\n{ex.StackTrace}");
|
||||
};
|
||||
|
||||
db.GetConnectionScope(configId).Aop.DataExecuting = (oldValue, entiyInfo) =>
|
||||
{
|
||||
};
|
||||
|
||||
db.GetConnectionScope(configId).CurrentConnectionConfig.MoreSettings = new ConnMoreSettings()
|
||||
{
|
||||
IsAutoRemoveDataCache = true
|
||||
@ -122,20 +122,6 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
DataInfoCacheService = cache,
|
||||
EntityService = (c, p) =>
|
||||
{
|
||||
p.DbTableName = p.DbTableName.FirstLowerCase();
|
||||
p.DbColumnName = p.DbColumnName.FirstLowerCase();
|
||||
|
||||
if (db.GetConnectionScope(configId).CurrentConnectionConfig.DbType == DbType.PostgreSQL)
|
||||
{
|
||||
if (p.DataType != null && p.DataType.Contains("nvarchar"))
|
||||
{
|
||||
p.DataType = "text";
|
||||
}
|
||||
if (c.Name == nameof(SysMenu.IsCache) || c.Name == nameof(SysMenu.IsFrame))
|
||||
{
|
||||
p.DataType = "char(1)";
|
||||
}
|
||||
}
|
||||
if (p.IsPrimarykey == true)//主键不能为null
|
||||
{
|
||||
p.IsNullable = false;
|
||||
@ -148,26 +134,46 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
{
|
||||
p.IsNullable = true;
|
||||
}
|
||||
|
||||
if (config.DbType == DbType.PostgreSQL)
|
||||
{
|
||||
if (c.Name == nameof(SysMenu.IsCache) || c.Name == nameof(SysMenu.IsFrame))
|
||||
{
|
||||
p.DataType = "char(1)";
|
||||
}
|
||||
}
|
||||
#region 兼容Oracle
|
||||
if (config.DbType == DbType.Oracle)
|
||||
{
|
||||
if (p.IsIdentity == true)
|
||||
{
|
||||
if (p.EntityName == nameof(SysUser))
|
||||
{
|
||||
p.OracleSequenceName = "SEQ_SYS_USER_USERID";
|
||||
}
|
||||
else if (p.EntityName == nameof(SysRole))
|
||||
{
|
||||
p.OracleSequenceName = "SEQ_SYS_ROLE_ROLEID";
|
||||
}
|
||||
else if (p.EntityName == nameof(SysDept))
|
||||
{
|
||||
p.OracleSequenceName = "SEQ_SYS_DEPT_DEPTID";
|
||||
}
|
||||
else if (p.EntityName == nameof(SysMenu))
|
||||
{
|
||||
p.OracleSequenceName = "SEQ_SYS_MENU_MENUID";
|
||||
}
|
||||
else
|
||||
{
|
||||
p.OracleSequenceName = "SEQ_ID";
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建db、表
|
||||
/// </summary>
|
||||
public static void InitDb()
|
||||
{
|
||||
var db = DbScoped.SugarScope;
|
||||
//建库:如果不存在创建数据库存在不会重复创建
|
||||
db.DbMaintenance.CreateDatabase();// 注意 :Oracle和个别国产库需不支持该方法,需要手动建库
|
||||
|
||||
var baseType = typeof(SysBase);
|
||||
var entityes = AssemblyUtils.GetAllTypes().Where(p => !p.IsAbstract && p != baseType && p.GetCustomAttribute<SugarTable>() != null).ToArray();
|
||||
|
||||
//23个表
|
||||
db.CodeFirst.InitTables(entityes);
|
||||
}
|
||||
|
||||
private static object GetParsValue(SugarParameter x)
|
||||
{
|
||||
if (x.DbType == System.Data.DbType.String || x.DbType == System.Data.DbType.DateTime || x.DbType == System.Data.DbType.String)
|
||||
|
||||
53
ZR.Admin.WebApi/Extensions/InitTable.cs
Normal file
53
ZR.Admin.WebApi/Extensions/InitTable.cs
Normal file
@ -0,0 +1,53 @@
|
||||
using SqlSugar.IOC;
|
||||
using ZR.Model.Models;
|
||||
using ZR.Model.System;
|
||||
using ZR.Model.System.Generate;
|
||||
|
||||
namespace ZR.Admin.WebApi.Extensions
|
||||
{
|
||||
/// <summary>
|
||||
/// 初始化表
|
||||
/// </summary>
|
||||
public class InitTable
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建db、表
|
||||
/// </summary>
|
||||
public static void InitDb()
|
||||
{
|
||||
var db = DbScoped.SugarScope;
|
||||
//建库:如果不存在创建数据库存在不会重复创建
|
||||
db.DbMaintenance.CreateDatabase();// 注意 :Oracle和个别国产库需不支持该方法,需要手动建库
|
||||
|
||||
//var baseType = typeof(SysBase);
|
||||
//var entityes = AssemblyUtils.GetAllTypes().Where(p => !p.IsAbstract && p != baseType && p.GetCustomAttribute<SugarTable>() != null).ToArray();
|
||||
//db.CodeFirst.InitTables(entityes);
|
||||
|
||||
//23个表,建议先使用下面方法初始化表,方便排查问题
|
||||
db.CodeFirst.InitTables(typeof(SysUser));
|
||||
db.CodeFirst.InitTables(typeof(SysRole));
|
||||
db.CodeFirst.InitTables(typeof(SysDept));
|
||||
db.CodeFirst.InitTables(typeof(SysPost));
|
||||
db.CodeFirst.InitTables(typeof(SysFile));
|
||||
db.CodeFirst.InitTables(typeof(SysConfig));
|
||||
db.CodeFirst.InitTables(typeof(SysNotice));
|
||||
db.CodeFirst.InitTables(typeof(SysLogininfor));
|
||||
db.CodeFirst.InitTables(typeof(SysOperLog));
|
||||
db.CodeFirst.InitTables(typeof(SysMenu));
|
||||
db.CodeFirst.InitTables(typeof(SysRoleMenu));
|
||||
db.CodeFirst.InitTables(typeof(SysRoleDept));
|
||||
db.CodeFirst.InitTables(typeof(SysUserRole));
|
||||
db.CodeFirst.InitTables(typeof(SysUserPost));
|
||||
db.CodeFirst.InitTables(typeof(SysTasks));
|
||||
db.CodeFirst.InitTables(typeof(SysTasksLog));
|
||||
db.CodeFirst.InitTables(typeof(CommonLang));
|
||||
db.CodeFirst.InitTables(typeof(GenTable));
|
||||
db.CodeFirst.InitTables(typeof(GenTableColumn));
|
||||
db.CodeFirst.InitTables(typeof(Article));
|
||||
db.CodeFirst.InitTables(typeof(ArticleCategory));
|
||||
db.CodeFirst.InitTables(typeof(SysDictData));
|
||||
db.CodeFirst.InitTables(typeof(SysDictType));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -36,7 +36,7 @@
|
||||
"DemoMode": false, //是否演示模式
|
||||
"Upload": {
|
||||
"uploadUrl": "http://localhost:8888", //本地存储资源访问路径
|
||||
"localSavePath": "uploads", //本地上传默认文件存储目录 wwwroot/uploads
|
||||
"localSavePath": "uploads", //本地上传默认文件存储目录 wwwroot/uploads, 如果saveType= 2 (请使用完整路径,比如 /home/resource)
|
||||
"maxSize": 15, //上传文件大小限制 15M
|
||||
"notAllowedExt": [ ".bat", ".exe", ".jar", ".js" ]
|
||||
},
|
||||
|
||||
1
ZR.Admin.WebApi/wwwroot/CodeGenTemplate/sql/Other.txt
Normal file
1
ZR.Admin.WebApi/wwwroot/CodeGenTemplate/sql/Other.txt
Normal file
@ -0,0 +1 @@
|
||||
请勾选 添加菜单 ,将会自动导入菜单到数据库中
|
||||
Binary file not shown.
@ -50,6 +50,7 @@ namespace ZR.CodeGenerator
|
||||
ShowBtnView = dto.GenTable.Options.CheckedBtn.Any(f => f == 5),
|
||||
ShowBtnTruncate = dto.GenTable.Options.CheckedBtn.Any(f => f == 6),
|
||||
ShowBtnMultiDel = dto.GenTable.Options.CheckedBtn.Any(f => f == 7),
|
||||
ViewFileName = dto.GenTable.BusinessName.FirstUpperCase()
|
||||
};
|
||||
var columns = dto.GenTable.Columns;
|
||||
|
||||
@ -67,7 +68,7 @@ namespace ZR.CodeGenerator
|
||||
GenerateControllers(replaceDto, dto);
|
||||
if (dto.VueVersion == 3)
|
||||
{
|
||||
GenerateVue3Views(dto);
|
||||
GenerateVue3Views(replaceDto, dto);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -182,7 +183,7 @@ namespace ZR.CodeGenerator
|
||||
replaceDto.VueViewFormHtml = GenerateCurdForm();
|
||||
|
||||
var tpl = JnHelper.ReadTemplate(CodeTemplateDir, fileName);
|
||||
var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
|
||||
var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{replaceDto.ViewFileName}.vue");
|
||||
|
||||
generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, tpl.Render()));
|
||||
}
|
||||
@ -191,7 +192,7 @@ namespace ZR.CodeGenerator
|
||||
/// vue3
|
||||
/// </summary>
|
||||
/// <param name="generateDto"></param>
|
||||
private static void GenerateVue3Views(GenerateDto generateDto)
|
||||
private static void GenerateVue3Views(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
{
|
||||
string fileName = generateDto.GenTable.TplCategory switch
|
||||
{
|
||||
@ -206,7 +207,7 @@ namespace ZR.CodeGenerator
|
||||
tpl.Set("options", generateDto.GenTable?.Options);
|
||||
|
||||
var result = tpl.Render();
|
||||
var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue");
|
||||
var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{replaceDto.ViewFileName}.vue");
|
||||
generateDto.GenCodes.Add(new GenCode(16, "index.vue", fullPath, result));
|
||||
}
|
||||
|
||||
@ -240,21 +241,13 @@ namespace ZR.CodeGenerator
|
||||
/// <param name="generateDto"></param>
|
||||
public static void GenerateSql(GenerateDto generateDto)
|
||||
{
|
||||
var tempName = "";
|
||||
switch (generateDto.DbType)
|
||||
string tempName = generateDto.DbType switch
|
||||
{
|
||||
case 0:
|
||||
tempName = "MySqlTemplate";
|
||||
break;
|
||||
case 1:
|
||||
tempName = "SqlTemplate";
|
||||
break;
|
||||
case 4:
|
||||
tempName = "PgSql";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
0 => "MySqlTemplate",
|
||||
1 => "SqlTemplate",
|
||||
4 => "PgSql",
|
||||
_ => "Other",
|
||||
};
|
||||
var tpl = JnHelper.ReadTemplate(CodeTemplateDir, Path.Combine("sql", $"{tempName}.txt"));
|
||||
tpl.Set("parentId", generateDto.GenTable?.Options?.ParentMenuId ?? 0);
|
||||
var result = tpl.Render();
|
||||
@ -315,18 +308,8 @@ namespace ZR.CodeGenerator
|
||||
}
|
||||
}
|
||||
}
|
||||
return tableName.UnderScoreToCamelCase();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取前端标签名
|
||||
/// </summary>
|
||||
/// <param name="columnDescription"></param>
|
||||
/// <param name="columnName"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetLabelName(string columnDescription, string columnName)
|
||||
{
|
||||
return string.IsNullOrEmpty(columnDescription) ? columnName : columnDescription;
|
||||
//return tableName.UnderScoreToCamelCase();
|
||||
return tableName.ConvertToPascal("_");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -343,7 +326,7 @@ namespace ZR.CodeGenerator
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
return "";
|
||||
return str;
|
||||
}
|
||||
}
|
||||
|
||||
@ -357,8 +340,8 @@ namespace ZR.CodeGenerator
|
||||
sDatatype = sDatatype.ToLower();
|
||||
string sTempDatatype = sDatatype switch
|
||||
{
|
||||
"int" or "number" or "integer" or "smallint" or "int4" or "int8" or "int2" => "int",
|
||||
"bigint" => "long",
|
||||
"int" or "integer" or "smallint" or "int4" or "int8" or "int2" => "int",
|
||||
"bigint" or "number" => "long",
|
||||
"tinyint" => "byte",
|
||||
"numeric" or "real" or "float" => "float",
|
||||
"decimal" or "numer(8,2)" or "numeric" => "decimal",
|
||||
@ -389,8 +372,8 @@ namespace ZR.CodeGenerator
|
||||
DbName = dbName,
|
||||
BaseNameSpace = "ZR.",//导入默认命名空间前缀
|
||||
ModuleName = "business",//导入默认模块名
|
||||
ClassName = GetClassName(tableName).FirstUpperCase(),
|
||||
BusinessName = tableName.UnderScoreToCamelCase().FirstUpperCase(),
|
||||
ClassName = GetClassName(tableName),
|
||||
BusinessName = GetClassName(tableName),
|
||||
FunctionAuthor = AppSettings.GetConfig(GenConstants.Gen_author),
|
||||
TableName = tableName,
|
||||
TableComment = desc,
|
||||
@ -412,12 +395,13 @@ namespace ZR.CodeGenerator
|
||||
/// </summary>
|
||||
/// <param name="genTable"></param>
|
||||
/// <param name="dbColumnInfos"></param>
|
||||
public static List<GenTableColumn> InitGenTableColumn(GenTable genTable, List<DbColumnInfo> dbColumnInfos)
|
||||
/// <param name="seqs"></param>
|
||||
public static List<GenTableColumn> InitGenTableColumn(GenTable genTable, List<DbColumnInfo> dbColumnInfos, List<OracleSeq> seqs = null)
|
||||
{
|
||||
List<GenTableColumn> genTableColumns = new();
|
||||
foreach (var column in dbColumnInfos)
|
||||
{
|
||||
genTableColumns.Add(InitColumnField(genTable, column));
|
||||
genTableColumns.Add(InitColumnField(genTable, column, seqs));
|
||||
}
|
||||
return genTableColumns;
|
||||
}
|
||||
@ -428,17 +412,26 @@ namespace ZR.CodeGenerator
|
||||
/// <param name="genTable"></param>
|
||||
/// <param name="column"></param>
|
||||
/// <returns></returns>
|
||||
private static GenTableColumn InitColumnField(GenTable genTable, DbColumnInfo column)
|
||||
private static GenTableColumn InitColumnField(GenTable genTable, DbColumnInfo column, List<OracleSeq> seqs)
|
||||
{
|
||||
var dbType = AppSettings.Get<int>(GenConstants.Gen_conn_dbType);
|
||||
var dataType = column.DataType;
|
||||
if (dbType == 3)
|
||||
{
|
||||
dataType = column.OracleDataType;
|
||||
var seqName = $"SEQ_{genTable.TableName}_{column.DbColumnName}";
|
||||
var isIdentity = seqs.Any(f => seqName.Equals(f.SEQUENCE_NAME, StringComparison.CurrentCultureIgnoreCase));
|
||||
column.IsIdentity = isIdentity;
|
||||
}
|
||||
GenTableColumn genTableColumn = new()
|
||||
{
|
||||
ColumnName = column.DbColumnName.FirstLowerCase(),
|
||||
ColumnComment = column.ColumnDescription,
|
||||
IsPk = column.IsPrimarykey,
|
||||
ColumnType = column.DataType,
|
||||
ColumnType = dataType,
|
||||
TableId = genTable.TableId,
|
||||
TableName = genTable.TableName,
|
||||
CsharpType = GetCSharpDatatype(column.DataType),
|
||||
CsharpType = GetCSharpDatatype(dataType),
|
||||
CsharpField = column.DbColumnName.ConvertToPascal("_"),
|
||||
IsRequired = !column.IsNullable,
|
||||
IsIncrement = column.IsIdentity,
|
||||
|
||||
@ -15,7 +15,7 @@ namespace ZR.CodeGenerator
|
||||
/// <summary>
|
||||
/// InputDto输入实体是不包含字段
|
||||
/// </summary>
|
||||
public static readonly string[] inputDtoNoField = new string[] { "createTime", "updateTime", "addtime", "create_time", "update_time" };
|
||||
public static readonly string[] inputDtoNoField = new string[] { "createTime", "updateTime", "addtime", "create_time", "update_time", "create_by", "update_by" };
|
||||
/// <summary>
|
||||
/// 图片字段
|
||||
/// </summary>
|
||||
|
||||
11
ZR.CodeGenerator/Model/OracleSeq.cs
Normal file
11
ZR.CodeGenerator/Model/OracleSeq.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace ZR.CodeGenerator.Model
|
||||
{
|
||||
/// <summary>
|
||||
/// Oracle库序列
|
||||
/// </summary>
|
||||
public class OracleSeq
|
||||
{
|
||||
public string SEQUENCE_NAME { get; set; }
|
||||
public long LAST_NUMBER { get; set; }
|
||||
}
|
||||
}
|
||||
@ -65,5 +65,9 @@ namespace ZR.CodeGenerator.Model
|
||||
/// 是否有编辑器
|
||||
/// </summary>
|
||||
public int ShowEditor { get; set; }
|
||||
/// <summary>
|
||||
/// vue页面文件名
|
||||
/// </summary>
|
||||
public string ViewFileName { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using SqlSugar;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using ZR.CodeGenerator.Model;
|
||||
using ZR.Model;
|
||||
|
||||
namespace ZR.CodeGenerator.Service
|
||||
@ -72,5 +73,18 @@ namespace ZR.CodeGenerator.Service
|
||||
{
|
||||
return GetSugarDbContext(dbName).DbMaintenance.GetColumnInfosByTableName(tableName, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取Oracle所有序列
|
||||
/// </summary>
|
||||
/// <param name="dbName"></param>
|
||||
/// <returns></returns>
|
||||
public List<OracleSeq> GetAllOracleSeqs(string dbName)
|
||||
{
|
||||
string sql = "SELECT * FROM USER_SEQUENCES";
|
||||
var seqs = GetSugarDbContext(dbName).Ado.SqlQuery<OracleSeq>(sql);
|
||||
|
||||
return seqs.ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,6 +12,6 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="JinianNet.JNTemplate" Version="2.3.3" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview08" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview10" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@ -33,7 +33,7 @@ namespace ZR.Model.System
|
||||
/// <summary>
|
||||
/// 文章内容
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "文章内容", ColumnDataType = "text")]
|
||||
[SugarColumn(ColumnDescription = "文章内容", ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||
public string Content { get; set; }
|
||||
/// <summary>
|
||||
/// 作者名
|
||||
|
||||
@ -16,17 +16,26 @@ namespace ZR.Model.System
|
||||
[ExcelIgnore]
|
||||
public string Create_by { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[SugarColumn(IsOnlyIgnoreUpdate = true, IsNullable = true)]
|
||||
[JsonProperty(propertyName: "CreateTime")]
|
||||
[ExcelColumn(Format = "yyyy-MM-dd HH:mm:ss")]
|
||||
public DateTime Create_time { get; set; } = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// 更新人
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[JsonProperty(propertyName: "UpdateBy")]
|
||||
[SugarColumn(IsOnlyIgnoreInsert = true, Length = 64, IsNullable = true)]
|
||||
[ExcelIgnore]
|
||||
public string Update_by { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// </summary>
|
||||
//[JsonIgnore]
|
||||
[SugarColumn(IsOnlyIgnoreInsert = true, IsNullable = true)]
|
||||
[JsonProperty(propertyName: "UpdateTime")]
|
||||
|
||||
@ -30,7 +30,7 @@ namespace ZR.Model.System
|
||||
/// <summary>
|
||||
/// 公告内容
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "notice_content", ColumnDataType = "text")]
|
||||
[SugarColumn(ColumnName = "notice_content", ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||
public string NoticeContent { get; set; }
|
||||
/// <summary>
|
||||
/// 公告状态 (0正常 1关闭)
|
||||
|
||||
@ -72,13 +72,13 @@ namespace ZR.Model.System
|
||||
/// <summary>
|
||||
/// 请求参数
|
||||
/// </summary>
|
||||
[SugarColumn(Length = 2000)]
|
||||
[SugarColumn(Length = 4000)]
|
||||
public string OperParam { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 返回参数
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDataType = "text")]
|
||||
[SugarColumn(ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||
public string JsonResult { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
using Newtonsoft.Json;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
|
||||
namespace ZR.Model.System
|
||||
{
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MiniExcel" Version="1.30.3" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview08" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview10" />
|
||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@ -15,6 +15,6 @@
|
||||
<PackageReference Include="MySqlConnector" Version="2.2.6" />
|
||||
<PackageReference Include="NETCore.Encrypt" Version="2.1.1" />
|
||||
<PackageReference Include="SqlSugar.IOC" Version="2.0.0" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview08" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.84-preview10" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@ -49,13 +49,11 @@ namespace ZR.Service.System
|
||||
public (string, object, object) InitMenuData(List<SysMenu> data)
|
||||
{
|
||||
var db = DbScoped.SugarScope;
|
||||
db.Ado.BeginTran();
|
||||
var x = db.Storageable(data)
|
||||
.SplitInsert(it => it.NotAny())
|
||||
.WhereColumns(it => it.MenuId)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
|
||||
.ToStorage();
|
||||
var result = x.AsInsertable.OffIdentity().ExecuteCommand();//插入可插入部分;
|
||||
db.Ado.CommitTran();
|
||||
|
||||
string msg = $"[菜单数据] 插入{x.InsertList.Count} 错误数据{x.ErrorList.Count} 总共{x.TotalList.Count}";
|
||||
return (msg, x.ErrorList, x.IgnoreList);
|
||||
@ -89,7 +87,7 @@ namespace ZR.Service.System
|
||||
.SplitInsert(it => it.NotAny())
|
||||
.WhereColumns(it => it.DeptId)
|
||||
.ToStorage();
|
||||
var result = x.AsInsertable.ExecuteCommand();
|
||||
var result = x.AsInsertable.OffIdentity().ExecuteCommand();
|
||||
|
||||
string msg = $"[部门数据] 插入{x.InsertList.Count} 错误数据{x.ErrorList.Count} 总共{x.TotalList.Count}";
|
||||
return (msg, x.ErrorList, x.IgnoreList);
|
||||
|
||||
@ -660,6 +660,8 @@ namespace ZR.Service
|
||||
//Insert(menuList);
|
||||
|
||||
var x = Storageable(menuList)
|
||||
.SplitInsert(it => !it.Any())
|
||||
.SplitUpdate(it => !it.Any())
|
||||
.WhereColumns(it => new { it.MenuName, it.ParentId })
|
||||
.ToStorage();
|
||||
x.AsInsertable.ExecuteCommand();//插入可插入部分;
|
||||
|
||||
46
document/oracle/seq.txt
Normal file
46
document/oracle/seq.txt
Normal file
@ -0,0 +1,46 @@
|
||||
|
||||
--通用序列id
|
||||
create sequence SEQ_ID
|
||||
minvalue 1
|
||||
maxvalue 99999999
|
||||
start with 1
|
||||
increment by 1
|
||||
nocache
|
||||
order;
|
||||
|
||||
--角色表序列id
|
||||
create sequence SEQ_SYS_ROLE_ROLEID
|
||||
minvalue 10
|
||||
maxvalue 99999999
|
||||
start with 10
|
||||
increment by 1
|
||||
nocache
|
||||
order;
|
||||
|
||||
--菜单表序列id
|
||||
create sequence SEQ_SYS_MENU_MENUID
|
||||
minvalue 2000
|
||||
maxvalue 99999999
|
||||
start with 2000
|
||||
increment by 1
|
||||
nocache
|
||||
order;
|
||||
|
||||
--用户表序列id
|
||||
create sequence SEQ_SYS_USER_USERID
|
||||
minvalue 100
|
||||
maxvalue 99999999
|
||||
start with 1
|
||||
increment by 100
|
||||
nocache
|
||||
order;
|
||||
|
||||
--部门表序列id
|
||||
create sequence SEQ_SYS_DEPT_DEPTID
|
||||
minvalue 200
|
||||
maxvalue 99999999
|
||||
start with 200
|
||||
increment by 1
|
||||
nocache
|
||||
order;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user