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.
40 lines
1.7 KiB
40 lines
1.7 KiB
3 weeks ago
|
using SqlSugar;
|
||
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Linq;
|
||
|
using System.Text;
|
||
|
using System.Threading.Tasks;
|
||
|
|
||
|
namespace ReZero.SuperAPI
|
||
|
{
|
||
|
internal class DllCreateTables : IDataService
|
||
|
{
|
||
|
public async Task<object> ExecuteAction(DataModel dataModel)
|
||
|
{
|
||
|
await Task.Delay(0);
|
||
|
var value = dataModel.DefaultParameters.First().Value;
|
||
|
var dbRoot = App.Db;
|
||
|
var ids = dbRoot.Utilities.DeserializeObject<List<long>>(value+"");
|
||
|
List<string> tableDifferences = new List<string>();
|
||
|
var result = string.Empty;
|
||
|
var entities = dbRoot.Queryable<ZeroEntityInfo>().In(ids).ToList();
|
||
|
foreach (var entity in entities)
|
||
|
{
|
||
|
if (entity.IsInitialized)
|
||
|
{
|
||
|
throw new Exception(TextHandler.GetCommonText("系统表不能修改", "The system table cannot be modified"));
|
||
|
}
|
||
|
var codeFirstDb = App.GetDbTableId(entity.Id)!;
|
||
|
var type = EntityGeneratorManager.GetTypeAsync(entity.Id).GetAwaiter().GetResult();
|
||
|
var entityInfo = codeFirstDb.EntityMaintenance.GetEntityInfo(type);
|
||
|
if (entityInfo.Columns.Any(it => !string.IsNullOrEmpty(it.DataType)&&it.DataType!=StaticConfig.CodeFirst_BigString&&it.IsJson==false))
|
||
|
{
|
||
|
codeFirstDb.CurrentConnectionConfig.MoreSettings.SqlServerCodeFirstNvarchar = false;
|
||
|
}
|
||
|
codeFirstDb.CodeFirst.InitTables(type);
|
||
|
codeFirstDb.CurrentConnectionConfig.MoreSettings.SqlServerCodeFirstNvarchar = true;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
}
|