mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 修复 PgArrayToMany 数组字段为空时的 bug;
This commit is contained in:
parent
21b166ae29
commit
98a588ada9
@ -733,6 +733,15 @@
|
|||||||
<param name="modelBuilder"></param>
|
<param name="modelBuilder"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:FreeSqlDbContextExtensions.ApplyConfigurationsFromAssembly(FreeSql.ICodeFirst,System.Reflection.Assembly,System.Func{System.Type,System.Boolean})">
|
||||||
|
<summary>
|
||||||
|
根据Assembly扫描所有继承IEntityTypeConfiguration<T>的配置类
|
||||||
|
</summary>
|
||||||
|
<param name="codeFirst"></param>
|
||||||
|
<param name="assembly"></param>
|
||||||
|
<param name="predicate"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
|
<member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
|
||||||
<summary>
|
<summary>
|
||||||
创建普通数据上下文档对象
|
创建普通数据上下文档对象
|
||||||
|
@ -1336,25 +1336,28 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}).ToArray();
|
}).ToArray();
|
||||||
var arrExp = Expression.NewArrayInit(tbref.RefColumns[0].CsType, listKeys.Where(a => a != null).SelectMany(a => a).Distinct()
|
var arrExp = Expression.NewArrayInit(tbref.RefColumns[0].CsType, listKeys.Where(a => a != null).SelectMany(a => a).Distinct()
|
||||||
.Select(a => Expression.Constant(Utils.GetDataReaderValue(tbref.RefColumns[0].CsType, a), tbref.RefColumns[0].CsType)).ToArray());
|
.Select(a => Expression.Constant(Utils.GetDataReaderValue(tbref.RefColumns[0].CsType, a), tbref.RefColumns[0].CsType)).ToArray());
|
||||||
var otmExpParm1 = Expression.Parameter(typeof(TNavigate), "a");
|
if (arrExp.Expressions.Any())
|
||||||
var containsMethod = _dicTypeMethod.GetOrAdd(tbref.RefColumns[0].CsType, et => new ConcurrentDictionary<string, MethodInfo>()).GetOrAdd("Contains", mn =>
|
|
||||||
typeof(Enumerable).GetMethods().Where(a => a.Name == mn).First()).MakeGenericMethod(tbref.RefColumns[0].CsType);
|
|
||||||
var refCol = Expression.MakeMemberAccess(otmExpParm1, tbref2.Properties[tbref.RefColumns[0].CsName]);
|
|
||||||
subSelect.Where(Expression.Lambda<Func<TNavigate, bool>>(
|
|
||||||
Expression.Call(null, containsMethod, arrExp, refCol), otmExpParm1));
|
|
||||||
|
|
||||||
if (isAsync)
|
|
||||||
{
|
{
|
||||||
|
var otmExpParm1 = Expression.Parameter(typeof(TNavigate), "a");
|
||||||
|
var containsMethod = _dicTypeMethod.GetOrAdd(tbref.RefColumns[0].CsType, et => new ConcurrentDictionary<string, MethodInfo>()).GetOrAdd("Contains", mn =>
|
||||||
|
typeof(Enumerable).GetMethods().Where(a => a.Name == mn).First()).MakeGenericMethod(tbref.RefColumns[0].CsType);
|
||||||
|
var refCol = Expression.MakeMemberAccess(otmExpParm1, tbref2.Properties[tbref.RefColumns[0].CsName]);
|
||||||
|
subSelect.Where(Expression.Lambda<Func<TNavigate, bool>>(
|
||||||
|
Expression.Call(null, containsMethod, arrExp, refCol), otmExpParm1));
|
||||||
|
|
||||||
|
if (isAsync)
|
||||||
|
{
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
if (selectExp == null) subList = await subSelect.ToListAsync(true, cancellationToken);
|
if (selectExp == null) subList = await subSelect.ToListAsync(true, cancellationToken);
|
||||||
else subList = await subSelect.ToListAsync<TNavigate>(selectExp, cancellationToken);
|
else subList = await subSelect.ToListAsync<TNavigate>(selectExp, cancellationToken);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (selectExp == null) subList = subSelect.ToList(true);
|
if (selectExp == null) subList = subSelect.ToList(true);
|
||||||
else subList = subSelect.ToList<TNavigate>(selectExp);
|
else subList = subSelect.ToList<TNavigate>(selectExp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (subList.Any() == false)
|
if (subList.Any() == false)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user