BUG:生成种子数据错误

This commit is contained in:
yzp 2024-12-18 11:55:39 +08:00
parent 75bb672063
commit 098dd4ad39

View File

@ -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 =>
{