mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-07-17 01:46:30 +08:00
完成外部数据源与代码生成关联处理
This commit is contained in:
parent
093be9500e
commit
13c7ec33e7
@ -137,7 +137,9 @@ namespace OpenAuth.App
|
|||||||
obj.CreateUserId = user.Id;
|
obj.CreateUserId = user.Id;
|
||||||
obj.CreateUserName = user.Name;
|
obj.CreateUserName = user.Name;
|
||||||
UnitWork.Add(obj);
|
UnitWork.Add(obj);
|
||||||
|
UnitWork.Save(); //需要先保存表结构,后面才能正常判定
|
||||||
|
|
||||||
|
_dbExtension.ProcessExternalDb(obj.Id); //先处理外部数据库连接
|
||||||
var columns = _dbExtension.GetDbTableStructure(obj.TableName);
|
var columns = _dbExtension.GetDbTableStructure(obj.TableName);
|
||||||
if (!columns.Any())
|
if (!columns.Any())
|
||||||
{
|
{
|
||||||
|
@ -82,17 +82,7 @@ namespace OpenAuth.App
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void Sync(SyncStructureReq req)
|
public void Sync(SyncStructureReq req)
|
||||||
{
|
{
|
||||||
var builderTable = SugarClient.Queryable<BuilderTable>().First(u => u.Id == req.BuilderTableId);
|
_dbExtension.ProcessExternalDb(req.Id); //先处理外部数据库连接
|
||||||
if (builderTable != null)
|
|
||||||
{
|
|
||||||
//如果代码生成器配置了外部数据库连接,则使用外部数据库连接
|
|
||||||
var connection = SugarClient.Queryable<ExternalDataSource>().First(u => u.Id == builderTable.ExternalDataSourceId);
|
|
||||||
if (connection != null)
|
|
||||||
{
|
|
||||||
var dbType = connection.Dbtype;
|
|
||||||
_dbExtension.SetConnection(connection.Connectionstring, dbType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var columns = _dbExtension.GetDbTableStructure(req.TableName);
|
var columns = _dbExtension.GetDbTableStructure(req.TableName);
|
||||||
if (!columns.Any())
|
if (!columns.Any())
|
||||||
{
|
{
|
||||||
|
@ -15,17 +15,10 @@ namespace OpenAuth.App.Request
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class SyncStructureReq
|
public class SyncStructureReq
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// 列ID
|
|
||||||
/// <para>Id为空则为添加</para>
|
|
||||||
/// </summary>
|
|
||||||
public string Id { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 代码生成器主表ID
|
/// 代码生成器主表ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string BuilderTableId { get; set; }
|
public string Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 表英文全称
|
/// 表英文全称
|
||||||
|
@ -19,6 +19,7 @@ namespace OpenAuth.App
|
|||||||
public class DbExtension
|
public class DbExtension
|
||||||
{
|
{
|
||||||
protected ISqlSugarClient SugarClient;
|
protected ISqlSugarClient SugarClient;
|
||||||
|
private string _dbTypeStr;
|
||||||
|
|
||||||
private IOptions<AppSetting> _appConfiguration;
|
private IOptions<AppSetting> _appConfiguration;
|
||||||
private IHttpContextAccessor _httpContextAccessor;
|
private IHttpContextAccessor _httpContextAccessor;
|
||||||
@ -84,16 +85,20 @@ namespace OpenAuth.App
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public IList<SysTableColumn> GetDbTableStructure(string tableName)
|
public IList<SysTableColumn> GetDbTableStructure(string tableName)
|
||||||
{
|
{
|
||||||
var dbtype = _appConfiguration.Value.DbTypes[_httpContextAccessor.GetTenantId()];
|
//如果是空,说明没有通过ProcessExternalDb设置过,直接从本地读取
|
||||||
if (dbtype == Define.DBTYPE_MYSQL)
|
if(string.IsNullOrEmpty(_dbTypeStr)){
|
||||||
|
_dbTypeStr = _appConfiguration.Value.DbTypes[_httpContextAccessor.GetTenantId()];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_dbTypeStr == Define.DBTYPE_MYSQL)
|
||||||
{
|
{
|
||||||
return GetMySqlStructure(tableName);
|
return GetMySqlStructure(tableName);
|
||||||
}
|
}
|
||||||
else if (dbtype == Define.DBTYPE_SQLSERVER)
|
else if (_dbTypeStr == Define.DBTYPE_SQLSERVER)
|
||||||
{
|
{
|
||||||
return GetSqlServerStructure(tableName);
|
return GetSqlServerStructure(tableName);
|
||||||
}
|
}
|
||||||
else if (dbtype == Define.DBTYPE_PostgreSQL)
|
else if (_dbTypeStr == Define.DBTYPE_PostgreSQL)
|
||||||
{
|
{
|
||||||
return GetPostgreStructure(tableName);
|
return GetPostgreStructure(tableName);
|
||||||
}
|
}
|
||||||
@ -409,13 +414,49 @@ namespace OpenAuth.App
|
|||||||
return new List<SysTableColumn>();
|
return new List<SysTableColumn>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 处理外部数据库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="buildertableId">代码生成器表ID</param>
|
||||||
|
public void ProcessExternalDb(string buildertableId){
|
||||||
|
var builderTable = SugarClient.Queryable<BuilderTable>().First(u => u.Id == buildertableId);
|
||||||
|
if (builderTable != null)
|
||||||
|
{
|
||||||
|
//如果代码生成器配置了外部数据库连接,则使用外部数据库连接
|
||||||
|
var connection = SugarClient.Queryable<ExternalDataSource>().First(u => u.Id == builderTable.ExternalDataSourceId);
|
||||||
|
if (connection != null)
|
||||||
|
{
|
||||||
|
var dbType = connection.Dbtype;
|
||||||
|
SetConnection(connection.Connectionstring, dbType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置数据库连接
|
/// 设置数据库连接
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="connectionString">数据库连接字符串</param>
|
/// <param name="connectionString">数据库连接字符串</param>
|
||||||
/// <param name="dbType">数据库类型</param>
|
/// <param name="dbType">数据库类型</param>
|
||||||
public void SetConnection(string connectionString, int? dbType)
|
private void SetConnection(string connectionString, int? dbType)
|
||||||
{
|
{
|
||||||
|
switch ((SqlSugar.DbType)dbType)
|
||||||
|
{
|
||||||
|
case SqlSugar.DbType.MySql:
|
||||||
|
_dbTypeStr = Define.DBTYPE_MYSQL;
|
||||||
|
break;
|
||||||
|
case SqlSugar.DbType.SqlServer:
|
||||||
|
_dbTypeStr = Define.DBTYPE_SQLSERVER;
|
||||||
|
break;
|
||||||
|
case SqlSugar.DbType.Oracle:
|
||||||
|
_dbTypeStr = Define.DBTYPE_ORACLE;
|
||||||
|
break;
|
||||||
|
case SqlSugar.DbType.PostgreSQL:
|
||||||
|
_dbTypeStr = Define.DBTYPE_PostgreSQL;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
_dbTypeStr = Define.DBTYPE_MYSQL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
var config = new ConnectionConfig
|
var config = new ConnectionConfig
|
||||||
{
|
{
|
||||||
ConnectionString = connectionString,
|
ConnectionString = connectionString,
|
||||||
|
Loading…
Reference in New Issue
Block a user