mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
add PgArrayToMany IncludeMany Dto test #1147
This commit is contained in:
parent
24d072409d
commit
1a0f0d0f02
@ -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)
|
||||
//{
|
||||
|
Loading…
x
Reference in New Issue
Block a user