Class DefaultQuerySqlGenerator
Default sql query visitor for generating SELECT command.
Inheritance
Implements
Namespace: Kros.KORM.Query.Sql
Assembly: Kros.KORM.dll
Syntax
public class DefaultQuerySqlGenerator : ExpressionVisitor, ISqlExpressionVisitor
Constructors
DefaultQuerySqlGenerator(IDatabaseMapper)
Constructor.
Declaration
public DefaultQuerySqlGenerator(IDatabaseMapper databaseMapper)
Parameters
| Type | Name | Description |
|---|---|---|
| IDatabaseMapper | databaseMapper | Database mapper. |
Fields
SqlFalse
SQL Server boolean value false.
Declaration
protected const string SqlFalse = "0"
Field Value
| Type | Description |
|---|---|
| System.String |
SqlTrue
SQL Server boolean value true.
Declaration
protected const string SqlTrue = "1"
Field Value
| Type | Description |
|---|---|
| System.String |
Properties
ColumnsPosition
Position in the SQL Query, where columns part ends. Some other columns can be added here.
Declaration
protected int ColumnsPosition { get; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
DatabaseMapper
Gets the database mapper.
Declaration
protected IDatabaseMapper DatabaseMapper { get; }
Property Value
| Type | Description |
|---|---|
| IDatabaseMapper |
LinqParameters
Gets the linq query parameters.
Declaration
protected DefaultQuerySqlGenerator.Parameters LinqParameters { get; }
Property Value
| Type | Description |
|---|---|
| DefaultQuerySqlGenerator.Parameters |
LinqStringBuilder
Gets the linq string builder.
Declaration
protected StringBuilder LinqStringBuilder { get; }
Property Value
| Type | Description |
|---|---|
| System.Text.StringBuilder |
MemberExpressionStack
Stack for System.Linq.Expressions.MemberExpression nodes.
Declaration
protected Stack<MemberExpression> MemberExpressionStack { get; }
Property Value
| Type | Description |
|---|---|
| System.Collections.Generic.Stack<System.Linq.Expressions.MemberExpression> |
Orders
List of ORDER BY parts for the query.
Declaration
protected List<string> Orders { get; }
Property Value
| Type | Description |
|---|---|
| System.Collections.Generic.List<System.String> |
PreviousMemberExpression
Returns the last System.Linq.Expressions.MemberExpression node in the MemberExpressionStack or null if the stack is empty.
Declaration
protected MemberExpression PreviousMemberExpression { get; }
Property Value
| Type | Description |
|---|---|
| System.Linq.Expressions.MemberExpression |
SelectExpression
Get root select expression.
Declaration
protected SelectExpression SelectExpression { get; }
Property Value
| Type | Description |
|---|---|
| SelectExpression |
Skip
Offset - the number of rows to skip.
Declaration
protected int Skip { get; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
SqlBuilder
General builder for the SQL query.
Declaration
protected StringBuilder SqlBuilder { get; }
Property Value
| Type | Description |
|---|---|
| System.Text.StringBuilder |
Top
Limit - the maximum number of rows to return.
Declaration
protected int Top { get; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
TopPosition
Position in the SQL query, where TOP clause belongs.
Declaration
protected int TopPosition { get; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
Methods
AddLimitAndOffset()
Adds limit (Top) and offset (Skip) clauses to the query.
Declaration
protected virtual void AddLimitAndOffset()
AddOrderBy()
Adds ORDER BY clause to the query.
Declaration
protected virtual void AddOrderBy()
AddParameterWithValue(Object)
Adds new parameter to the SQL with specified value.
Declaration
protected void AddParameterWithValue(object value)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Object | value | The value of the SQL parameter. |
BindAnyCondition(String)
Adds any method to query.
Declaration
protected virtual string BindAnyCondition(string existsCondition)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | existsCondition |
Returns
| Type | Description |
|---|---|
| System.String |
BindContains(MethodCallExpression)
Binds the System.String.Contains(System.String) method.
Declaration
protected virtual Expression BindContains(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
BindEndWith(MethodCallExpression)
Binds the System.String.EndsWith(System.String) method.
Declaration
protected virtual Expression BindEndWith(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
BindIsNullOrEmpty(MethodCallExpression)
Binds the System.String.IsNullOrEmpty(System.String) method.
Declaration
protected virtual Expression BindIsNullOrEmpty(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
BindReplace(MethodCallExpression)
Binds the System.String.Replace(System.String,System.String) method.
Declaration
protected virtual Expression BindReplace(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
BindStartWith(MethodCallExpression)
Binds the System.String.StartsWith(System.String) method.
Declaration
protected virtual Expression BindStartWith(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
BindSubstring(MethodCallExpression)
Binds the System.String.Substring(System.Int32) method.
Declaration
protected virtual Expression BindSubstring(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
BindToLower(MethodCallExpression)
Binds to System.String.ToLower method.
Declaration
protected virtual Expression BindToLower(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
BindToUpper(MethodCallExpression)
Binds to System.String.ToUpper method.
Declaration
protected virtual Expression BindToUpper(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
BindTrim(MethodCallExpression)
Binds the System.String.Trim method.
Declaration
protected virtual Expression BindTrim(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
CreateOrderByString()
Creates ORDER BY string.
Declaration
protected string CreateOrderByString()
Returns
| Type | Description |
|---|---|
| System.String | String. |
CreateQueryReader()
Creates a reader over data, for example to manually apply limit and offset if the database does not support it.
Declaration
protected virtual IDataReaderEnvelope CreateQueryReader()
Returns
| Type | Description |
|---|---|
| IDataReaderEnvelope | Implementation of IDataReaderEnvelope or null. |
GenerateSql(Expression)
Generates the SQL from expression.
Declaration
public virtual QueryInfo GenerateSql(Expression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.Expression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| QueryInfo | SQL select command text. |
GenerateWhereCondition(Expression, String)
Declaration
public WhereExpression GenerateWhereCondition(Expression whereExpression, string parameterNamePrefix = "")
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.Expression | whereExpression | |
| System.String | parameterNamePrefix |
Returns
| Type | Description |
|---|---|
| WhereExpression |
GetConstantExpressionValue(ConstantExpression)
Returns value of constant expression expression.
Declaration
protected object GetConstantExpressionValue(ConstantExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.ConstantExpression | expression | Expression. |
Returns
| Type | Description |
|---|---|
| System.Object | Value of the |
GetOperator(BinaryExpression)
Gets the operator.
Declaration
protected virtual string GetOperator(BinaryExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.BinaryExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.String |
Visit(Expression)
Dispatches the expression to one of the more specialized visit methods in this class.
Declaration
public override Expression Visit(Expression node)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.Expression | node | The expression to visit. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | The modified expression, if it or any subexpression was modified; otherwise, returns the original expression. |
Overrides
VisitAggregate(MethodCallExpression, String)
Visits the Linq aggregate methods.
Declaration
protected virtual Expression VisitAggregate(MethodCallExpression expression, string aggregateName)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
| System.String | aggregateName | Name of aggreage method. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
VisitAny(MethodCallExpression)
Visits the Linq Any method.
Declaration
protected virtual Expression VisitAny(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
VisitBinary(BinaryExpression)
Visits the Linq Binary.
Declaration
protected override Expression VisitBinary(BinaryExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.BinaryExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
Overrides
Exceptions
| Type | Condition |
|---|---|
| System.NotSupportedException | If this binary expression is not supported. |
VisitColumns(ColumnsExpression)
Visits the columns.
Declaration
public virtual Expression VisitColumns(ColumnsExpression columnExpression)
Parameters
| Type | Name | Description |
|---|---|---|
| ColumnsExpression | columnExpression | The column expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | Expression |
VisitCompare(MethodCallExpression, ExpressionType)
Visit Visual Basic Compare expression
Declaration
protected virtual Expression VisitCompare(MethodCallExpression expression, ExpressionType binExpNodeType)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | Method call expression Compare expression |
| System.Linq.Expressions.ExpressionType | binExpNodeType | Binary expression node type |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | Reduced expression. |
VisitConstant(ConstantExpression)
Visits the constant.
Declaration
protected override Expression VisitConstant(ConstantExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.ConstantExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
Overrides
Exceptions
| Type | Condition |
|---|---|
| System.NotSupportedException | If type of constant is System.Object. |
VisitCount(MethodCallExpression)
Visits the Linq Count method.
Declaration
protected virtual Expression VisitCount(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
VisitFirst(MethodCallExpression)
Visits the Linq First.
Declaration
protected virtual Expression VisitFirst(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
VisitGroupBy(GroupByExpression)
Visits the group by.
Declaration
public virtual Expression VisitGroupBy(GroupByExpression groupByExpression)
Parameters
| Type | Name | Description |
|---|---|---|
| GroupByExpression | groupByExpression | The group by expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | Expression |
VisitLinqExpression(MethodCallExpression)
Visits the linq expression.
Declaration
protected virtual Expression VisitLinqExpression(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The method call expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | Reduced expression. |
VisitMember(MemberExpression)
Visits the member.
Declaration
protected override Expression VisitMember(MemberExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MemberExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
Overrides
Exceptions
| Type | Condition |
|---|---|
| System.NotSupportedException | If the member type is not supported. |
VisitMethodCall(MethodCallExpression)
Visits the method call.
Declaration
protected override Expression VisitMethodCall(MethodCallExpression exp)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | exp | The method call expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | Reuced expression |
Overrides
VisitOrderBy(OrderByExpression)
Visits the order by.
Declaration
public virtual Expression VisitOrderBy(OrderByExpression orderByExpression)
Parameters
| Type | Name | Description |
|---|---|---|
| OrderByExpression | orderByExpression | The order by expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | Expression |
VisitSelect(SelectExpression)
Visits the select.
Declaration
public virtual Expression VisitSelect(SelectExpression selectExpression)
Parameters
| Type | Name | Description |
|---|---|---|
| SelectExpression | selectExpression | The select expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | Expression |
VisitSkip(MethodCallExpression)
Visits the Linq Skip method.
Declaration
protected virtual Expression VisitSkip(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | The |
VisitSql(SqlExpression)
Visits the SQL.
Declaration
public virtual Expression VisitSql(SqlExpression sqlExpression)
Parameters
| Type | Name | Description |
|---|---|---|
| SqlExpression | sqlExpression | The SQL expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | Expression |
VisitStringMethods(MethodCallExpression)
Visits the string methods.
Declaration
protected virtual Expression VisitStringMethods(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
Exceptions
| Type | Condition |
|---|---|
| System.NotSupportedException | If this System.String method is not supported. |
VisitTable(TableExpression)
Visits the table.
Declaration
public virtual Expression VisitTable(TableExpression tableExpression)
Parameters
| Type | Name | Description |
|---|---|---|
| TableExpression | tableExpression | The table expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | Expression |
VisitTake(MethodCallExpression)
Visits the Linq Take method.
Declaration
protected virtual Expression VisitTake(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
Exceptions
| Type | Condition |
|---|---|
| System.NotSupportedException | If call of Take method is not supported. |
VisitUnary(UnaryExpression)
Visits the unary.
Declaration
protected override Expression VisitUnary(UnaryExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.UnaryExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |
Overrides
Exceptions
| Type | Condition |
|---|---|
| System.NotSupportedException | If this unary expression is not supported. |
VisitVbOperatorsMethods(MethodCallExpression, ExpressionType)
Visit Visual Basic operators expressions.
Declaration
protected virtual Expression VisitVbOperatorsMethods(MethodCallExpression expression, ExpressionType binExpNodeType)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | Method call expression |
| System.Linq.Expressions.ExpressionType | binExpNodeType | Binary expression node type |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | Reduced expression. |
VisitWhere(WhereExpression)
Visits the where.
Declaration
public virtual Expression VisitWhere(WhereExpression whereExpression)
Parameters
| Type | Name | Description |
|---|---|---|
| WhereExpression | whereExpression | The where expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression | Expression |
VisitWhere(MethodCallExpression)
Visits the Linq Where method.
Declaration
protected virtual Expression VisitWhere(MethodCallExpression expression)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Linq.Expressions.MethodCallExpression | expression | The expression. |
Returns
| Type | Description |
|---|---|
| System.Linq.Expressions.Expression |