예제 #1
0
        internal void BuildSelect(IReadOnlyList <MemberInfo> members)
        {
            SqlQuery.Append("SELECT ");

            for (var i = 0; i < members.Count; i++)
            {
                SqlQuery.AppendFormat(numberFormat, connectorQuery.Table + ", ", members[i].GetName());
            }

            SqlQuery.AppendFormat(numberFormat, "FROM " + connectorQuery.Table, PluralizedEntityName);

            SqlQuery.Replace(", FROM", " FROM");
        }
예제 #2
0
        internal void BuildWhere(Expression expression, IReadOnlyList <MemberInfo> members)
        {
            SqlQuery.Append("SELECT ");

            for (var i = 0; i < members.Count; i++)
            {
                SqlQuery.AppendFormat(numberFormat, connectorQuery.Table + ", ", members[i].GetName());
            }

            SqlQuery.AppendFormat(numberFormat, "FROM " + connectorQuery.Table + " WHERE ", PluralizedEntityName);

            // Fix query
            SqlQuery.Replace(", FROM", " FROM");

            Visit(expression);
        }
예제 #3
0
        internal void BuildUpdate(MethodCallExpression[] expression, Expression condition)
        {
            SqlQuery.AppendFormat(numberFormat, connectorQuery.UpdateQuery, Pluralize <T>());

            for (var i = 0; i < expression.Length; i++)
            {
                var memberName = (expression[i].Arguments[0] as MemberExpression).Member.GetName();

                MemberExpression memberExpression = null;
                object           memberValue      = null;

                if (expression[i].Arguments[1].NodeType == ExpressionType.MemberAccess)
                {
                    memberExpression = expression[i].Arguments[1] as MemberExpression;
                }
                else if (expression[i].Arguments[1].NodeType == ExpressionType.Convert)
                {
                    memberExpression = (expression[i].Arguments[1] as UnaryExpression).Operand as MemberExpression;
                }
                else if (expression[i].Arguments[1].NodeType == ExpressionType.Constant)
                {
                    memberValue = (expression[i].Arguments[1] as ConstantExpression).Value;
                }

                memberValue = memberValue ?? GetExpressionValue(memberExpression);

                SqlQuery.AppendFormat(numberFormat, connectorQuery.Equal + ", ", memberName);
                SqlParameters.Add($"@{memberName}", memberValue);
            }

            if (condition != null)
            {
                SqlQuery.Append("WHERE ");

                Visit(condition);

                SqlQuery.Replace(", WHERE", " WHERE");
                SqlQuery.Replace(", FROM", " FROM");
            }
            else
            {
                SqlQuery.Remove(SqlQuery.Length - 2, 2);
            }
        }