Merge pull request 'BUG:种子数据类型如果出现空数据会立即终止后序的所有种子数据生成' (#350) from koy07555/Admin.NET.Pro:种子数据生成生大BUG into v2

Reviewed-on: https://code.adminnet.top/Admin.NET/Admin.NET.Pro/pulls/350
This commit is contained in:
zuohuaijun 2025-05-28 11:35:47 +08:00
commit e33777d783
2 changed files with 706 additions and 716 deletions

View File

@ -131,15 +131,15 @@ public static class SqlSugarExtension
Expression binaryExpresioFilter; Expression binaryExpresioFilter;
if (Enum.IsDefined(typeof(FilterLogicEnum), filter.Logic)) if (filter.Logic.HasValue)
{ {
if (filter.Filters is null) throw new ArgumentException("The Filters attribute is required when declaring a logic"); if (filter.Filters is null) throw new ArgumentException("The Filters attribute is required when declaring a logic");
binaryExpresioFilter = CreateFilterExpression(filter.Logic, filter.Filters, parameter); binaryExpresioFilter = CreateFilterExpression(filter.Logic.Value, filter.Filters, parameter);
} }
else else
{ {
var filterValid = GetValidFilter(filter); var filterValid = GetValidFilter(filter);
binaryExpresioFilter = CreateFilterExpression(filterValid.Field!, filterValid.Operator, filterValid.Value, parameter); binaryExpresioFilter = CreateFilterExpression(filterValid.Field!, filterValid.Operator.Value, filterValid.Value, parameter);
} }
var lambda = Expression.Lambda<Func<T, bool>>(binaryExpresioFilter, parameter); var lambda = Expression.Lambda<Func<T, bool>>(binaryExpresioFilter, parameter);
@ -175,15 +175,15 @@ public static class SqlSugarExtension
{ {
Expression bExpresionFilter; Expression bExpresionFilter;
if (Enum.IsDefined(typeof(FilterLogicEnum), filter.Logic)) if (filter.Logic.HasValue)
{ {
if (filter.Filters is null) throw new ArgumentException("The Filters attribute is required when declaring a logic"); if (filter.Filters is null) throw new ArgumentException("The Filters attribute is required when declaring a logic");
bExpresionFilter = CreateFilterExpression(filter.Logic, filter.Filters, parameter); bExpresionFilter = CreateFilterExpression(filter.Logic.Value, filter.Filters, parameter);
} }
else else
{ {
var filterValid = GetValidFilter(filter); var filterValid = GetValidFilter(filter);
bExpresionFilter = CreateFilterExpression(filterValid.Field!, filterValid.Operator, filterValid.Value, parameter); bExpresionFilter = CreateFilterExpression(filterValid.Field!, filterValid.Operator.Value, filterValid.Value, parameter);
} }
filterExpression = filterExpression is null ? bExpresionFilter : CombineFilter(filterLogic, filterExpression, bExpresionFilter); filterExpression = filterExpression is null ? bExpresionFilter : CombineFilter(filterLogic, filterExpression, bExpresionFilter);
@ -384,23 +384,38 @@ public static class SqlSugarExtension
{ {
if (entityType.GetCustomAttribute<SysTableAttribute>() == null && if (entityType.GetCustomAttribute<SysTableAttribute>() == null &&
(entityType.GetCustomAttribute<LogTableAttribute>() != null || (entityType.GetCustomAttribute<LogTableAttribute>() != null ||
entityType.GetCustomAttribute<TenantAttribute>() != null)) entityType.GetCustomAttribute<TenantAttribute>() != null))
return default; {
Console.WriteLine($" 忽略 {seedType.FullName,-58} ({dbProvider.CurrentConnectionConfig.ConfigId}) 原因:非SysTable 与 (LogTable 或 Tenant)");
return default;
}
} }
else if (config.ConfigId.ToString() == SqlSugarConst.LogConfigId) // 日志库 else if (config.ConfigId.ToString() == SqlSugarConst.LogConfigId) // 日志库
{ {
if (entityType.GetCustomAttribute<LogTableAttribute>() == null) return default; if (entityType.GetCustomAttribute<LogTableAttribute>() == null)
{
Console.WriteLine($" 忽略 {seedType.FullName,-58} ({dbProvider.CurrentConnectionConfig.ConfigId}) 原因:LogTable");
return default;
}
} }
else else
{ {
var att = entityType.GetCustomAttribute<TenantAttribute>(); // 自定义的库 var att = entityType.GetCustomAttribute<TenantAttribute>(); // 自定义的库
if (att == null || att.configId.ToString() != config.ConfigId.ToString()) return default; if (att == null || att.configId.ToString() != config.ConfigId.ToString())
{
Console.WriteLine($" 忽略 {seedType.FullName,-58} ({dbProvider.CurrentConnectionConfig.ConfigId}) 原因: Tenant 表,但不是这个库:{att.configId} != {config.ConfigId} ");
return default;
}
} }
var instance = Activator.CreateInstance(seedType); var instance = Activator.CreateInstance(seedType);
var hasDataMethod = seedType.GetMethod("HasData"); var hasDataMethod = seedType.GetMethod("HasData");
var seedData = ((IEnumerable)hasDataMethod?.Invoke(instance, null))?.Cast<object>().ToArray() ?? []; var seedData = ((IEnumerable)hasDataMethod?.Invoke(instance, null))?.Cast<object>().ToArray() ?? [];
if (!seedData.Any()) return default; if (!seedData.Any())
{
Console.WriteLine($" 忽略 {seedType.FullName,-58} ({dbProvider.CurrentConnectionConfig.ConfigId}) 原因:没有数据");
return default;
}
// 若实体包含Id字段则设置为当前租户Id递增1 // 若实体包含Id字段则设置为当前租户Id递增1
var idProp = entityType.GetProperty(nameof(EntityBaseId.Id)); var idProp = entityType.GetProperty(nameof(EntityBaseId.Id));

File diff suppressed because it is too large Load Diff