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;
|
using Npgsql;
|
||||||
|
|
||||||
namespace Admin.NET.Core.Service;
|
namespace Admin.NET.Core.Service;
|
||||||
@ -337,15 +340,16 @@ public class SysDatabaseService : IDynamicApiController, ITransient
|
|||||||
|
|
||||||
input.EntityName = entityType.Name;
|
input.EntityName = entityType.Name;
|
||||||
input.SeedDataName = entityType.Name + "SeedData";
|
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);
|
var query = db.QueryableByObject(entityType);
|
||||||
// 优先用创建时间排序
|
// 优先用创建时间排序
|
||||||
DbColumnInfo orderField = dbColumnInfos.FirstOrDefault(u => u.DbColumnName.ToLower() == "create_time" || u.DbColumnName.ToLower() == "createtime");
|
DbColumnInfo orderField = dbColumnInfos.FirstOrDefault(u => u.DbColumnName.ToLower() == "create_time" || u.DbColumnName.ToLower() == "createtime");
|
||||||
if (orderField != null) query = query.OrderBy(orderField.DbColumnName);
|
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();
|
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];
|
for (var j = i; j > 0; j--) propertyList[j] = propertyList[j - 1];
|
||||||
propertyList[0] = temp;
|
propertyList[0] = temp;
|
||||||
}
|
}
|
||||||
// 拼接数据
|
var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
|
||||||
var recordList = records.Select(obj => string.Join(", ", propertyList.Select(prop =>
|
var recordList = JsonConvert.SerializeObject(records, Formatting.Indented, timeConverter);
|
||||||
{
|
|
||||||
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 tContent = await File.ReadAllTextAsync(templatePath);
|
var tContent = await File.ReadAllTextAsync(templatePath);
|
||||||
var data = new
|
var data = new
|
||||||
@ -476,7 +458,7 @@ public class SysDatabaseService : IDynamicApiController, ITransient
|
|||||||
input.ConfigId,
|
input.ConfigId,
|
||||||
tableInfo.Description,
|
tableInfo.Description,
|
||||||
JsonIgnoreInfo = new List<List<JsonIgnoredPropertyData>>(),
|
JsonIgnoreInfo = new List<List<JsonIgnoredPropertyData>>(),
|
||||||
RecordList = JSON.Serialize(recordList)
|
RecordList = recordList
|
||||||
};
|
};
|
||||||
var tResult = await _viewEngine.RunCompileAsync(tContent, data, builderAction: builder =>
|
var tResult = await _viewEngine.RunCompileAsync(tContent, data, builderAction: builder =>
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user