mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	add PgArrayToMany IncludeMany Dto test #1147
This commit is contained in:
		@@ -58,6 +58,17 @@ namespace FreeSql.Tests.PostgreSQL
 | 
			
		||||
            };
 | 
			
		||||
            Assert.Equal(6, fsql.Insert(users).ExecuteAffrows());
 | 
			
		||||
 | 
			
		||||
            var users4 = fsql.Select<UserLazyLoading>().IncludeMany(a => a.Roles).ToList(a => new
 | 
			
		||||
            {
 | 
			
		||||
                user = a, roles = a.Roles
 | 
			
		||||
            });
 | 
			
		||||
            var roles4 = fsql.Select<RoleLazyLoading>().IncludeMany(a => a.Users).ToList(a => new
 | 
			
		||||
            {
 | 
			
		||||
                role = a,
 | 
			
		||||
                users = a.Users
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            var users3 = fsql.Select<UserLazyLoading>().IncludeMany(a => a.Roles).ToList();
 | 
			
		||||
            Assert.Equal(6, users3.Count);
 | 
			
		||||
            var users2 = users3;
 | 
			
		||||
 
 | 
			
		||||
@@ -222,6 +222,17 @@ namespace FreeSql.Internal.CommonProvider
 | 
			
		||||
                var bindings = new List<MemberBinding>();
 | 
			
		||||
                if (imni.IsOutputPrimary) bindings.AddRange(imni.Table.Primarys.Select(a => Expression.Bind(imni.Table.Properties[a.CsName], Expression.MakeMemberAccess(imni.CurrentExpression, imni.Table.Properties[a.CsName]))));
 | 
			
		||||
                if (imni.Childs.Any()) bindings.AddRange(imni.Childs.Select(a => Expression.Bind(imni.Table.Properties[a.Key], GetIncludeManyNewInitExpression(a.Value))));
 | 
			
		||||
                var pgarrayToManys = imni.Table.GetAllTableRef().Select(tr =>
 | 
			
		||||
                {
 | 
			
		||||
                    if (tr.Value.RefType != TableRefType.PgArrayToMany) return null;
 | 
			
		||||
                    var reftb = _orm.CodeFirst.GetTableByEntity(tr.Value.RefEntityType);
 | 
			
		||||
                    if (tr.Value.RefColumns[0] == reftb.Primarys[0])
 | 
			
		||||
                    {
 | 
			
		||||
                        bindings.Add(Expression.Bind(imni.Table.Properties[tr.Value.Columns[0].CsName], Expression.MakeMemberAccess(imni.CurrentExpression, imni.Table.Properties[tr.Value.Columns[0].CsName])));
 | 
			
		||||
                        return tr.Key;
 | 
			
		||||
                    }
 | 
			
		||||
                    return null;
 | 
			
		||||
                }).ToList();
 | 
			
		||||
                return Expression.MemberInit(imni.Table.Type.InternalNewExpression(), bindings);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -48,6 +48,7 @@ namespace FreeSql.Internal.Model
 | 
			
		||||
            }
 | 
			
		||||
            return tryref;
 | 
			
		||||
        }
 | 
			
		||||
        public IEnumerable<KeyValuePair<string, TableRef>> GetAllTableRef() => _refs;
 | 
			
		||||
 | 
			
		||||
        //public void CopyTo(TableInfo target)
 | 
			
		||||
        //{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user