Skip to content

关于eagerLoading问题 #4

@fxwdl

Description

@fxwdl

我看现在目前的EntityFrameworkRepository的实现,对于eagerloading只支持1级,比如s=>s.Classes这种。
因为这个传进来的表达式,最终还是要转成string放到Include中的,而EF又是支持多级的Include的,所以我改成了多级的方式。老大看看这样做是否合理,或者说这个目前的实现本身就是支持,是我没有搞明白?

var list = re.FindAll(new ExpressionSpecification(s => s.Name.Contains("中学")), s => s.Name, SortOrder.Descending, s => s.SchoolClasses[0].Students, s => s.SchoolClasses[0].Students);

    private string GetEagerLoadingPath(Expression<Func<TAggregateRoot, dynamic>> eagerLoadingProperty)
    {
        MemberExpression memberExpression = this.GetMemberInfo(eagerLoadingProperty);
        var parameterName = eagerLoadingProperty.Parameters.First().Name;
        var memberExpressionStr = memberExpression.ToString();
        memberExpressionStr = Regex.Replace(memberExpressionStr, @"get_Item\(\d+\)\.", "");
        var prefix = parameterName + ".";
        var path = memberExpressionStr.Substring(prefix.Length);            
        return path;
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions