- 修复 GroupBy 类型转换错误;#186

- 修复 .ToList(a => new DTO(a.id)) 报 未将对象引用设置到对象的实例 问题; #187
- 修复 update语句,二元运算解析出错; #184
This commit is contained in:
28810
2020-01-19 23:53:06 +08:00
parent 774511e7ec
commit c64deb3d20
33 changed files with 428 additions and 9 deletions

View File

@ -127,14 +127,14 @@ namespace FreeSql
/// <typeparam name="T3"></typeparam>
/// <param name="column"></param>
/// <returns></returns>
T3 Sum<T3>(T3 column);
decimal Sum<T3>(T3 column);
/// <summary>
/// 平均值
/// </summary>
/// <typeparam name="T3"></typeparam>
/// <param name="column"></param>
/// <returns></returns>
T3 Avg<T3>(T3 column);
decimal Avg<T3>(T3 column);
/// <summary>
/// 最大值
/// </summary>

View File

@ -124,7 +124,7 @@ namespace FreeSql.Internal
var child = new ReadAnonymousTypeInfo
{
Property = null,
CsName = (initExp.NewExpression.Arguments[a] as MemberExpression)?.Member.Name,
CsName = initExp.NewExpression.Members != null ? initExp.NewExpression.Members[a].Name : (initExp.NewExpression.Arguments[a] as MemberExpression)?.Member.Name,
CsType = initExp.NewExpression.Arguments[a].Type,
MapType = initExp.NewExpression.Arguments[a].Type
};
@ -206,7 +206,7 @@ namespace FreeSql.Internal
var child = new ReadAnonymousTypeInfo
{
Property = null,
CsName = (newExp.Arguments[a] as MemberExpression)?.Member.Name,
CsName = newExp.Members != null ? newExp.Members[a].Name : (newExp.Arguments[a] as MemberExpression)?.Member.Name,
CsType = newExp.Arguments[a].Type,
MapType = newExp.Arguments[a].Type
};

View File

@ -114,6 +114,7 @@ namespace FreeSql.Internal.CommonProvider
var index = 0;
_comonExp.ReadAnonymousField(null, field, map, ref index, select, getSelectGroupingMapString, null, true);
if (map.Childs.Any() == false && map.MapType == null) map.MapType = typeof(TReturn);
var method = _select.GetType().GetMethod("ToListMapReader", BindingFlags.Instance | BindingFlags.NonPublic);
method = method.MakeGenericMethod(typeof(TReturn));
return method.Invoke(_select, new object[] { (map, field.Length > 0 ? field.Remove(0, 2).ToString() : null) }) as List<TReturn>;
@ -181,6 +182,7 @@ namespace FreeSql.Internal.CommonProvider
var index = 0;
_comonExp.ReadAnonymousField(null, field, map, ref index, select, getSelectGroupingMapString, null, true);
if (map.Childs.Any() == false && map.MapType == null) map.MapType = typeof(TReturn);
var method = _select.GetType().GetMethod("ToListMapReaderAsync", BindingFlags.Instance | BindingFlags.NonPublic);
method = method.MakeGenericMethod(typeof(TReturn));
return method.Invoke(_select, new object[] { (map, field.Length > 0 ? field.Remove(0, 2).ToString() : null) }) as Task<List<TReturn>>;

View File

@ -363,7 +363,9 @@ namespace FreeSql.Internal.CommonProvider
switch (nodeType)
{
case ExpressionType.Equal:
_set.Append(", ").Append(_commonExpression.ExpressionWhereLambdaNoneForeignObject(null, _table, null, exp, null, null));
var equalBinaryExp = body as BinaryExpression;
_set.Append(", ").Append(_commonExpression.ExpressionWhereLambdaNoneForeignObject(null, _table, null, equalBinaryExp.Left, null, null))
.Append(" = ").Append(_commonExpression.ExpressionWhereLambdaNoneForeignObject(null, _table, null, equalBinaryExp.Right, null, null));
return this;
case ExpressionType.MemberInit:
var initExp = body as MemberInitExpression;