Skip to content

Commit

Permalink
Fix potential memory leak because of ef core query cache.
Browse files Browse the repository at this point in the history
  • Loading branch information
maliming committed Feb 24, 2019
1 parent 7c13392 commit 34e5321
Showing 1 changed file with 12 additions and 24 deletions.
36 changes: 12 additions & 24 deletions Abp.GeneralTree/GeneralTree/GeneralTreeManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -294,48 +294,36 @@ private async Task<string> GetChildFullNameAsync(TPrimaryKey? parentId, string c
private static Expression<Func<TTree, bool>> EqualId(TPrimaryKey id)
{
var lambdaParam = Expression.Parameter(typeof(TTree));

var lambdaBody = Expression.Equal(
Expression.PropertyOrField(lambdaParam, "Id"),
Expression.Constant(id, typeof(TPrimaryKey))
);

var leftExpression = Expression.PropertyOrField(lambdaParam, "Id");
var rightExpression = Expression.Constant(id, typeof(TPrimaryKey));
var lambdaBody = Expression.Equal(leftExpression, rightExpression);
return Expression.Lambda<Func<TTree, bool>>(lambdaBody, lambdaParam);
}

private static Expression<Func<TTree, bool>> NotEqualId(TPrimaryKey id)
{
var lambdaParam = Expression.Parameter(typeof(TTree));

var lambdaBody = Expression.NotEqual(
Expression.PropertyOrField(lambdaParam, "Id"),
Expression.Constant(id, typeof(TPrimaryKey))
);

var leftExpression = Expression.PropertyOrField(lambdaParam, "Id");
var rightExpression = Expression.Constant(id, typeof(TPrimaryKey));
var lambdaBody = Expression.NotEqual(leftExpression, rightExpression);
return Expression.Lambda<Func<TTree, bool>>(lambdaBody, lambdaParam);
}

private static Expression<Func<TTree, bool>> EqualParentId(TPrimaryKey? parentId)
{
var lambdaParam = Expression.Parameter(typeof(TTree));

var lambdaBody = Expression.Equal(
Expression.PropertyOrField(lambdaParam, "ParentId"),
Expression.Constant(parentId, typeof(TPrimaryKey?))
);

var leftExpression = Expression.PropertyOrField(lambdaParam, "ParentId");
var rightExpression = Expression.Constant(parentId, typeof(TPrimaryKey?));
var lambdaBody = Expression.Equal(leftExpression, rightExpression);
return Expression.Lambda<Func<TTree, bool>>(lambdaBody, lambdaParam);
}

private static Expression<Func<TTree, bool>> NotEqualParentId(TPrimaryKey? parentId)
{
var lambdaParam = Expression.Parameter(typeof(TTree));

var lambdaBody = Expression.NotEqual(
Expression.PropertyOrField(lambdaParam, "ParentId"),
Expression.Constant(parentId, typeof(TPrimaryKey?))
);

var leftExpression = Expression.PropertyOrField(lambdaParam, "ParentId");
var rightExpression = Expression.Constant(parentId, typeof(TPrimaryKey?));
var lambdaBody = Expression.NotEqual(leftExpression, rightExpression);
return Expression.Lambda<Func<TTree, bool>>(lambdaBody, lambdaParam);
}

Expand Down

0 comments on commit 34e5321

Please sign in to comment.