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"); }
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); }
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); } }