BUG:生成种子数据错误
This commit is contained in:
parent
75bb672063
commit
098dd4ad39
@ -4,6 +4,9 @@
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
using NewLife.Reflection;
|
||||
using Newtonsoft.Json.Converters;
|
||||
using Newtonsoft.Json;
|
||||
using Npgsql;
|
||||
|
||||
namespace Admin.NET.Core.Service;
|
||||
@ -337,15 +340,16 @@ public class SysDatabaseService : IDynamicApiController, ITransient
|
||||
|
||||
input.EntityName = entityType.Name;
|
||||
input.SeedDataName = entityType.Name + "SeedData";
|
||||
if (!string.IsNullOrWhiteSpace(input.Suffix)) input.SeedDataName += input.Suffix;
|
||||
if (!string.IsNullOrWhiteSpace(input.Suffix)) input.SeedDataName += input.Suffix;
|
||||
|
||||
// 查询所有数据
|
||||
var query = db.QueryableByObject(entityType);
|
||||
// 优先用创建时间排序
|
||||
DbColumnInfo orderField = dbColumnInfos.FirstOrDefault(u => u.DbColumnName.ToLower() == "create_time" || u.DbColumnName.ToLower() == "createtime");
|
||||
if (orderField != null) query = query.OrderBy(orderField.DbColumnName);
|
||||
// 再使用第一个主键排序
|
||||
//query = query.OrderBy(dbColumnInfos.First(u => u.IsPrimarykey).DbColumnName);
|
||||
// 优先用创建时间排序,再使用第一个主键排序
|
||||
if (dbColumnInfos.Any(u => u.IsPrimarykey))
|
||||
query = query.OrderBy(dbColumnInfos.First(u => u.IsPrimarykey).DbColumnName);
|
||||
var records = ((IEnumerable)await query.ToListAsync()).ToDynamicList();
|
||||
|
||||
// 过滤已存在的数据
|
||||
@ -440,30 +444,8 @@ public class SysDatabaseService : IDynamicApiController, ITransient
|
||||
for (var j = i; j > 0; j--) propertyList[j] = propertyList[j - 1];
|
||||
propertyList[0] = temp;
|
||||
}
|
||||
// 拼接数据
|
||||
var recordList = records.Select(obj => string.Join(", ", propertyList.Select(prop =>
|
||||
{
|
||||
var propType = Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType;
|
||||
object value = prop.GetValue(obj);
|
||||
if (value == null) value = "null";
|
||||
else if (propType == typeof(string))
|
||||
{
|
||||
value = $"\"{value}\"";
|
||||
}
|
||||
else if (propType.IsEnum)
|
||||
{
|
||||
value = $"{propType.Name}.{value}";
|
||||
}
|
||||
else if (propType == typeof(bool))
|
||||
{
|
||||
value = (bool)value ? "true" : "false";
|
||||
}
|
||||
else if (propType == typeof(DateTime))
|
||||
{
|
||||
value = $"DateTime.Parse(\"{((DateTime)value):yyyy-MM-dd HH:mm:ss.fff}\")";
|
||||
}
|
||||
return $"{prop.Name}={value}";
|
||||
}))).ToList();
|
||||
var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
|
||||
var recordList = JsonConvert.SerializeObject(records, Formatting.Indented, timeConverter);
|
||||
|
||||
var tContent = await File.ReadAllTextAsync(templatePath);
|
||||
var data = new
|
||||
@ -476,7 +458,7 @@ public class SysDatabaseService : IDynamicApiController, ITransient
|
||||
input.ConfigId,
|
||||
tableInfo.Description,
|
||||
JsonIgnoreInfo = new List<List<JsonIgnoredPropertyData>>(),
|
||||
RecordList = JSON.Serialize(recordList)
|
||||
RecordList = recordList
|
||||
};
|
||||
var tResult = await _viewEngine.RunCompileAsync(tContent, data, builderAction: builder =>
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user