Skip to content

Commit cc5feb5

Browse files
committed
- 优化 Select<object>().AsType(..) Dto 映射查询;
1 parent d99e72a commit cc5feb5

File tree

3 files changed

+31
-2
lines changed

3 files changed

+31
-2
lines changed

Examples/base_entity/Program.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,19 @@ class StringNulable
332332
[Column(StringLength = -1, IsNullable = false)]
333333
public string code2 { get; set; }
334334
}
335+
public class CCC
336+
{
337+
public int bb { get; set; }
338+
public int aa { get; set; }
339+
}
340+
public class BBB
341+
{
342+
public int bb { get; set; }
343+
}
344+
public class AAA
345+
{
346+
public int aa { get; set; }
347+
}
335348

336349

337350
static void Main(string[] args)
@@ -389,6 +402,9 @@ static void Main(string[] args)
389402
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
390403
#endregion
391404

405+
var sqlskdfj = fsql.Select<object>().AsType(typeof(BBB)).ToSql(a => new CCC());
406+
407+
392408
var dbpars = new List<DbParameter>();
393409

394410
var a1id1 = Guid.NewGuid();

FreeSql.DbContext/FreeSql.DbContext.xml

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

FreeSql/Internal/CommonExpression.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,9 @@ void LocalSetFieldAlias(ref int localIndex, bool isdiymemexp)
356356
};
357357
parent.Childs.Add(child);
358358
if (dtTb.Parameter != null)
359-
ReadAnonymousField(_tables, _tableRule, field, child, ref index, Expression.Property(dtTb.Parameter, dtTb.Table.Properties[trydtocol.CsName]), select, diymemexp, whereGlobalFilter, findIncludeMany, findSubSelectMany, isAllDtoMap);
359+
ReadAnonymousField(_tables, _tableRule, field, child, ref index, Expression.Property(
360+
dtTb.Parameter.Type == dtTb.Table.Type ? (Expression)dtTb.Parameter : Expression.TypeAs(dtTb.Parameter, dtTb.Table.Type),
361+
dtTb.Table.Properties[trydtocol.CsName]), select, diymemexp, whereGlobalFilter, findIncludeMany, findSubSelectMany, isAllDtoMap);
360362
else
361363
{
362364
child.DbField = $"{dtTb.Alias}.{_common.QuoteSqlName(trydtocol.Attribute.Name)}";
@@ -475,7 +477,9 @@ void LocalSetFieldAlias(ref int localIndex, bool isdiymemexp)
475477
};
476478
parent.Childs.Add(child);
477479
if (dtTb.Parameter != null)
478-
ReadAnonymousField(_tables, _tableRule, field, child, ref index, Expression.Property(dtTb.Parameter, dtTb.Table.Properties[trydtocol.CsName]), select, diymemexp, whereGlobalFilter, findIncludeMany, findSubSelectMany, isAllDtoMap);
480+
ReadAnonymousField(_tables, _tableRule, field, child, ref index, Expression.Property(
481+
dtTb.Parameter.Type == dtTb.Table.Type ? (Expression)dtTb.Parameter : Expression.TypeAs(dtTb.Parameter, dtTb.Table.Type),
482+
dtTb.Table.Properties[trydtocol.CsName]), select, diymemexp, whereGlobalFilter, findIncludeMany, findSubSelectMany, isAllDtoMap);
479483
else
480484
{
481485
child.DbField = _common.RereadColumn(trydtocol, $"{dtTb.Alias}.{_common.QuoteSqlName(trydtocol.Attribute.Name)}");

0 commit comments

Comments
 (0)