public static string Column <Table>(this IOrmLiteDialectProvider dialect, Expression <Func <Table, object> > propertyExpression, bool prefixTable = false)
        {
            string     propertyName = null;
            Expression expr         = propertyExpression;

            if (expr is LambdaExpression lambda)
            {
                expr = lambda.Body;
            }

            if (expr.NodeType == ExpressionType.Convert && expr is UnaryExpression unary)
            {
                expr = unary.Operand;
            }

            if (expr is MemberExpression member)
            {
                propertyName = member.Member.Name;
            }

            if (propertyName == null)
            {
                propertyName = expr.ToPropertyInfo()?.Name;
            }

            if (propertyName != null)
            {
                return(dialect.Column <Table>(propertyName, prefixTable));
            }

            throw new ArgumentException("Expected Lambda MemberExpression but received: " + propertyExpression.Name);
        }