You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
3.3 KiB
74 lines
3.3 KiB
using SqlSugar; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Text; |
|
|
|
namespace ReZero.SuperAPI |
|
{ |
|
public partial class MethodApi |
|
{ |
|
private long _targetDb; |
|
public bool SynchronousData(long originalDb, long targetDb, bool? isBak) |
|
{ |
|
_targetDb = targetDb; |
|
var odb = App.Db; |
|
var tdb = App.GetDbById(targetDb); |
|
if (!tdb!.Ado.IsValidConnection()) |
|
{ |
|
new Exception(TextHandler.GetCommonText("目标数据库连接失败", "The target database connection failed")); |
|
} |
|
tdb!.CurrentConnectionConfig.MoreSettings=odb.CurrentConnectionConfig.MoreSettings; |
|
tdb!.CurrentConnectionConfig.ConfigureExternalServices = odb.CurrentConnectionConfig.ConfigureExternalServices; |
|
try |
|
{ |
|
tdb!.CodeFirst.InitTables(typeof(ZeroEntityInfo), |
|
typeof(ZeroEntityColumnInfo), |
|
typeof(ZeroInterfaceCategory), |
|
typeof(ZeroInterfaceList), |
|
typeof(ZeroDatabaseInfo), |
|
typeof(ZeroUserInfo)); |
|
tdb!.BeginTran(); |
|
var randomNum =Convert.ToInt32( DateTime.Now.ToString("HHmmss")); |
|
SynchronousTable<ZeroEntityInfo>(odb, tdb, isBak, randomNum); |
|
SynchronousTable<ZeroEntityColumnInfo>(odb, tdb, isBak, randomNum); |
|
SynchronousTable<ZeroInterfaceCategory>(odb, tdb, isBak, randomNum); |
|
SynchronousTable<ZeroInterfaceList>(odb, tdb, isBak, randomNum); |
|
SynchronousTable<ZeroDatabaseInfo>(odb, tdb, isBak, randomNum); |
|
SynchronousTable<ZeroUserInfo>(odb, tdb, isBak, randomNum); |
|
var tIno = odb.Queryable<ZeroDatabaseInfo>().First(it => it.Id == targetDb); |
|
tdb.Updateable<ZeroDatabaseInfo>() |
|
.SetColumns(it => new ZeroDatabaseInfo |
|
{ |
|
DbType = tIno.DbType, |
|
Connection = tIno.Connection, |
|
EasyDescription = tIno.EasyDescription, |
|
}) |
|
.Where(it => it.Id == 1).ExecuteCommand(); |
|
tdb.Deleteable<ZeroDatabaseInfo>().Where(it => it.Id == targetDb).ExecuteCommand(); |
|
tdb.CommitTran(); |
|
} |
|
catch (Exception) |
|
{ |
|
tdb!.CommitTran(); |
|
throw; |
|
} |
|
return true; |
|
} |
|
|
|
private void SynchronousTable<T>(ISqlSugarClient? odb, SqlSugar.SqlSugarClient? tdb, bool? isBak, int randomNum) where T : class, new() |
|
{ |
|
|
|
var tTableName = tdb!.EntityMaintenance.GetTableName<T>(); |
|
var newtTableName = tTableName.ToLower().Replace("zero_","_bak_") + randomNum; |
|
var oldList = odb!.Queryable<T>().ToList(); |
|
if (isBak == true) |
|
{ |
|
tdb!.CodeFirst.As<T>(newtTableName).InitTables<T>(); |
|
tdb.DbMaintenance.TruncateTable(newtTableName); |
|
tdb.Insertable(oldList).AS(newtTableName).ExecuteCommand(); |
|
} |
|
tdb.DbMaintenance.TruncateTable<T>(); |
|
tdb.Insertable(oldList).ExecuteCommand(); |
|
} |
|
} |
|
}
|
|
|