mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-09-20 10:37:55 +08:00
fix issue #I42IFB 获取Oracle结构异常
fix issue #I462OD JSON解析异常 增加主表ParentId,可以同时添加主、从表结构 可以动态控制复杂界面显示编辑权限,采用代码生成的表定义来控制
This commit is contained in:
@@ -114,17 +114,79 @@ namespace OpenAuth.App
|
||||
{
|
||||
return GetMySqlStructure(tableName);
|
||||
}
|
||||
else
|
||||
else if (dbtype == Define.DBTYPE_SQLSERVER)
|
||||
{
|
||||
return GetSqlServerStructure(tableName);
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetOracleStructure(tableName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取Oracle表结构
|
||||
/// </summary>
|
||||
private IList<SysTableColumn> GetOracleStructure(string tableName)
|
||||
{
|
||||
var sql = $@"
|
||||
select utc.column_name as COLUMNNAME,
|
||||
utc.data_type COLUMNTYPE,
|
||||
utc.data_length MaxLength,
|
||||
CASE utc.nullable WHEN 'N' THEN 0 ELSE 1 END IsNull,
|
||||
utc.data_default DEFAULTVAL,
|
||||
ucc.comments ""COMMENT"",
|
||||
UTC.table_name TABLENAME,
|
||||
CASE UTC.COLUMN_NAME
|
||||
WHEN (select col.column_name
|
||||
from user_constraints con,
|
||||
user_cons_columns col
|
||||
where con.constraint_name = col.constraint_name
|
||||
and con.constraint_type = 'P'
|
||||
and col.table_name = '{ tableName}') THEN 1
|
||||
ELSE 0 END AS IsKey,
|
||||
CASE
|
||||
WHEN data_type IN ('BIT', 'BOOL') THEN
|
||||
'bool'
|
||||
WHEN data_type in ('SMALLINT') THEN 'short'
|
||||
WHEN data_type in ('TINYINT') THEN 'bool'
|
||||
WHEN data_type IN ('NUMBER', 'CHAR', 'INT', 'Year') THEN
|
||||
'int'
|
||||
WHEN data_type in ('BIGINT') THEN
|
||||
'bigint'
|
||||
WHEN data_type IN ('FLOAT', 'DOUBLE', 'DECIMAL') THEN
|
||||
'decimal'
|
||||
WHEN data_type IN
|
||||
('CHAR', 'VARCHAR', 'TINY TEXT', 'TEXT', 'MEDIUMTEXT', 'LONGTEXT', 'TINYBLOB', 'BLOB',
|
||||
'MEDIUMBLOB', 'LONGBLOB', 'Time') THEN
|
||||
'string'
|
||||
WHEN data_type IN ('Date', 'DateTime', 'TIMESTAMP(6)') THEN
|
||||
'DateTime'
|
||||
ELSE 'string'
|
||||
END AS EntityType
|
||||
from user_tab_columns utc,
|
||||
user_col_comments ucc
|
||||
where utc.table_name = ucc.table_name
|
||||
and utc.column_name = ucc.column_name
|
||||
and utc.table_name = '{ tableName}'
|
||||
order by column_id; ";
|
||||
|
||||
foreach (var context in _contexts)
|
||||
{
|
||||
var columns = context.Query<SysTableColumn>().FromSqlRaw(sql);
|
||||
var columnList = columns?.ToList();
|
||||
if (columnList != null && columnList.Any())
|
||||
{
|
||||
return columnList;
|
||||
}
|
||||
}
|
||||
|
||||
return new List<SysTableColumn>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取Mysql表结构信息
|
||||
/// </summary>
|
||||
/// <param name="tableName"></param>
|
||||
/// <returns></returns>
|
||||
private IList<SysTableColumn> GetMySqlStructure(string tableName)
|
||||
{
|
||||
var sql = $@"SELECT DISTINCT
|
||||
|
Reference in New Issue
Block a user