If an auto-increment column is set explicitly by the user LAST_INSERT_ID will not return the expected value. This amender makes sure the user defined value for the auto-increment column is returned by the next call to LAST_INSERT_ID.
Inheritance: SqlExpressionVisitor
示例#1
0
        protected override Expression PreProcess(Expression expression)
        {
            expression = base.PreProcess(expression);
            expression = MySqlAutoIncrementAmender.Amend(expression);
            expression = MySqlInsertIntoAutoIncrementAmender.Amend(SqlReferencesColumnDeferrabilityRemover.Remove(expression), this.sqlDataTypeProvider);

            return(expression);
        }
        protected override Expression PreProcess(Expression expression)
        {
            expression = base.PreProcess(expression);
            expression = MySqlAutoIncrementAmender.Amend(expression);
            expression = MySqlInsertIntoAutoIncrementAmender.Amend(SqlReferencesColumnDeferrabilityRemover.Remove(expression));
            expression = MySqlNestedTableReferenceInUpdateFixer.Fix(expression);

            return(expression);
        }
        protected override Expression PreProcess(Expression expression)
        {
            expression = base.PreProcess(expression);
            expression = MySqlAutoIncrementAmender.Amend(expression);
            expression = MySqlInsertIntoAutoIncrementAmender.Amend(SqlReferencesColumnDeferrabilityRemover.Remove(expression));
            expression = MySqlNestedTableReferenceInUpdateFixer.Fix(expression);
            expression = MySqlDefaultValueConstraintFixer.Fix(expression);

            if (this.silentlyIgnoreIndexConditions)
            {
                expression = MySqlIndexConditionRemover.Remove(expression);
            }

            return(expression);
        }
        public static Expression Amend(Expression expression, SqlDataTypeProvider sqlDataTypeProvider)
        {
            var processor = new MySqlInsertIntoAutoIncrementAmender(sqlDataTypeProvider);

            return(processor.Visit(expression));
        }
		public static Expression Amend(Expression expression, SqlDataTypeProvider sqlDataTypeProvider)
		{
			var processor = new MySqlInsertIntoAutoIncrementAmender(sqlDataTypeProvider);

			return processor.Visit(expression);
		}