public override DbExpression Visit(DbRefExpression expression) { EntityUtil.CheckArgumentNull(expression, "expression"); DbExpression result = expression; EntityType targetType = (EntityType)TypeHelpers.GetEdmType <RefType>(expression.ResultType).ElementType; DbExpression newArgument = this.VisitExpression(expression.Argument); EntityType newType = (EntityType)this.VisitType(targetType); EntitySet newSet = (EntitySet)this.VisitEntitySet(expression.EntitySet); if (!object.ReferenceEquals(expression.Argument, newArgument) || !object.ReferenceEquals(targetType, newType) || !object.ReferenceEquals(expression.EntitySet, newSet)) { result = CqtBuilder.RefFromKey(newSet, newArgument, newType); } NotifyIfChanged(expression, result); return(result); }