protected override DbExpression VisitMemberAccess(MemberExpression exp) { ParameterExpression p; if (ExpressionExtension.IsDerivedFromParameter(exp, out p)) { IObjectModel model = this.FindModel(p); return(model.GetDbExpression(exp)); } if (IsComeFrom_First_Or_FirstOrDefault(exp)) { DbExpression dbExpression = this.Process_MemberAccess_Which_Link_First_Or_FirstOrDefault(exp); return(dbExpression); } else { return(base.VisitMemberAccess(exp)); } }