public virtual SqlFunctionExpression Function(string name, bool nullResultAllowed, Type returnType, RelationalTypeMapping typeMapping = null)
        {
            Check.NotEmpty(name, nameof(name));
            Check.NotNull(returnType, nameof(returnType));

            return SqlFunctionExpression.CreateNiladic(name, nullResultAllowed, returnType, typeMapping);
        }
        public virtual SqlFunctionExpression Function(
            SqlExpression instance,
            string name,
            bool nullResultAllowed,
            bool instancePropagatesNullability,
            Type returnType,
            RelationalTypeMapping typeMapping = null)
        {
            Check.NotEmpty(name, nameof(name));
            Check.NotNull(returnType, nameof(returnType));

            return SqlFunctionExpression.CreateNiladic(
                ApplyDefaultTypeMapping(instance),
                name,
                nullResultAllowed,
                instancePropagatesNullability,
                returnType,
                typeMapping);
        }