Update DynamicCoreSelectModel

This commit is contained in:
sunkaixuan
2025-04-03 15:35:48 +08:00
parent f6923474ec
commit 0128b8b435
2 changed files with 68 additions and 3 deletions

View File

@@ -1,7 +1,9 @@
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks;
namespace SqlSugar namespace SqlSugar
{ {
@@ -25,6 +27,23 @@ namespace SqlSugar
return method.Invoke(Value, null); return method.Invoke(Value, null);
} }
public async Task<object> ToListAsync()
{
if (Value is null)
{
throw new InvalidOperationException("Value cannot be null.");
}
var method = Value.GetType().GetMyMethod("ToListAsync", 0);
if (method == null)
{
throw new InvalidOperationException("The Value object does not have a ToListAsync method with no parameters.");
}
var task = (Task)method.Invoke(Value, null);
return await GetTask(task).ConfigureAwait(false);
}
public object ToPageList(int pageNumber, int pageSize) public object ToPageList(int pageNumber, int pageSize)
{ {
if (Value is null) if (Value is null)
@@ -41,6 +60,23 @@ namespace SqlSugar
return method.Invoke(Value, new object[] { pageNumber, pageSize }); return method.Invoke(Value, new object[] { pageNumber, pageSize });
} }
public async Task<object> ToPageListAsync(int pageNumber, int pageSize)
{
if (Value is null)
{
throw new InvalidOperationException("Value cannot be null.");
}
var method = Value.GetType().GetMyMethod("ToPageListAsync", 2);
if (method == null)
{
throw new InvalidOperationException("The Value object does not have a ToPageListAsync method with two parameters.");
}
var task = (Task)method.Invoke(Value, new object[] { pageNumber, pageSize });
return await GetTask(task).ConfigureAwait(false);
}
public object ToPageList(int pageNumber, int pageSize, ref int totalNumber) public object ToPageList(int pageNumber, int pageSize, ref int totalNumber)
{ {
if (Value is null) if (Value is null)
@@ -59,5 +95,33 @@ namespace SqlSugar
totalNumber = (int)parameters[2]; totalNumber = (int)parameters[2];
return result; return result;
} }
public async Task<object> ToPageListAsync(int pageNumber, int pageSize, int totalNumber)
{
if (Value is null)
{
throw new InvalidOperationException("Value cannot be null.");
}
var method = Value.GetType().GetMyMethod("ToPageListAsync", 3);
if (method == null)
{
throw new InvalidOperationException("The Value object does not have a ToPageListAsync method with three parameters.");
}
var parameters = new object[] { pageNumber, pageSize, totalNumber };
var task = (Task)method.Invoke(Value, parameters);
var result = await GetTask(task).ConfigureAwait(false);
totalNumber = (int)parameters[2];
return result;
}
private static async Task<object> GetTask(Task task)
{
await task.ConfigureAwait(false); // 等待任务完成
var resultProperty = task.GetType().GetProperty("Result");
var value = resultProperty.GetValue(task);
return value;
}
} }
} }

View File

@@ -332,7 +332,8 @@ namespace SqlSugar
public List<T> DataReaderToListNoUsing<T>(IDataReader reader) public List<T> DataReaderToListNoUsing<T>(IDataReader reader)
{ {
var tType = typeof(T); var tType = typeof(T);
var classProperties = tType.GetProperties().ToList(); var classProperties = tType.GetProperties()
.Where(p => p.GetIndexParameters().Length == 0).ToList();
var reval = new List<T>(); var reval = new List<T>();
if (reader != null && !reader.IsClosed) if (reader != null && !reader.IsClosed)
{ {
@@ -357,7 +358,7 @@ namespace SqlSugar
using (reader) using (reader)
{ {
var tType = typeof(T); var tType = typeof(T);
var classProperties = tType.GetProperties().ToList(); var classProperties = tType.GetProperties().Where(p => p.GetIndexParameters().Length == 0).ToList();
var reval = new List<T>(); var reval = new List<T>();
if (reader != null && !reader.IsClosed) if (reader != null && !reader.IsClosed)
{ {
@@ -424,7 +425,7 @@ namespace SqlSugar
public async Task<List<T>> DataReaderToListAsyncNoUsing<T>(IDataReader reader) public async Task<List<T>> DataReaderToListAsyncNoUsing<T>(IDataReader reader)
{ {
var tType = typeof(T); var tType = typeof(T);
var classProperties = tType.GetProperties().ToList(); var classProperties = tType.GetProperties().Where(p => p.GetIndexParameters().Length == 0).ToList();
var reval = new List<T>(); var reval = new List<T>();
if (reader != null && !reader.IsClosed) if (reader != null && !reader.IsClosed)
{ {