Support Select(it=>new class(x,y))

This commit is contained in:
sunkaixuan 2024-05-08 21:22:53 +08:00
parent 9ec80cc153
commit eb9862a2ae
3 changed files with 11 additions and 3 deletions

View File

@ -1884,7 +1884,7 @@ namespace SqlSugar
{
result = this.Context.Utilities.DataReaderToSelectArrayList<TResult>(dataReader);
}
else if (entityType.IsAnonymousType() || isComplexModel|| StaticConfig.EnableAot)
else if (QueryBuilder.IsParameterizedConstructor || entityType.IsAnonymousType() || isComplexModel|| StaticConfig.EnableAot)
{
if (entityType.IsClass() == false && StaticConfig.EnableAot)
{
@ -2073,6 +2073,7 @@ namespace SqlSugar
asyncQueryableBuilder.RemoveFilters = this.QueryBuilder.RemoveFilters?.ToArray();
asyncQueryableBuilder.Hints = this.QueryBuilder.Hints;
asyncQueryableBuilder.MasterDbTableName = this.QueryBuilder.MasterDbTableName;
asyncQueryableBuilder.IsParameterizedConstructor = this.QueryBuilder.IsParameterizedConstructor;
if (this.QueryBuilder.AppendNavInfo != null)
{
asyncQueryableBuilder.AppendNavInfo = new AppendNavInfo()

View File

@ -33,7 +33,8 @@ namespace SqlSugar
public ISqlBuilder Builder { get; set; }
#endregion
#region Splicing basic
#region Splicing basic
public bool IsParameterizedConstructor { get; set; }
public string Hints { get; set; }
internal AppendNavInfo AppendNavInfo { get; set; }
public Type[] RemoveFilters { get; set; }

View File

@ -145,7 +145,13 @@ namespace SqlSugar
int i = 0;
foreach (var item in expression.Arguments)
{
string memberName = expression.Members[i].Name;
string memberName = expression.Members?[i]?.Name;
if (memberName == null&& expression.Members ==null && item is MemberExpression member)
{
memberName = member.Member.Name;
this.Context.SugarContext.QueryBuilder.IsParameterizedConstructor = true;
}
if (this.Context?.SugarContext?.QueryBuilder?.AppendNavInfo?.MappingNavProperties?.ContainsKey(memberName) == true)
{
++i;