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
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; |
|
} |
|
} |
|
} |