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