internal override string CreateSqlString(CommandFactory factory, bool isFullName, CreateSqlState state) { string sql = state.GetDataSql(this, isFullName); if (sql != null) { return(sql); } object left; object right; DataFieldInfo leftInfo = _left as DataFieldInfo; DataFieldInfo rightInfo = _right as DataFieldInfo; if (!Object.Equals(leftInfo, null) && !Object.Equals(rightInfo, null)) { left = leftInfo.CreateSqlString(factory, isFullName, state); right = rightInfo.CreateSqlString(factory, isFullName, state); } else if (!Object.Equals(leftInfo, null)) { left = leftInfo.CreateSqlString(factory, isFullName, state); object rightObject = LambdaExpressionExtend.ConvertLambdaObject(_right); right = state.AddDataParameter(factory, rightObject); } else if (!Object.Equals(rightInfo, null)) { right = rightInfo.CreateSqlString(factory, isFullName, state); object leftObject = LambdaExpressionExtend.ConvertLambdaObject(_left); left = state.AddDataParameter(factory, leftObject); } else { throw new LightDataException(SR.DataFieldContentError); } switch (_opera) { case MathOperator.Puls: sql = factory.CreatePlusSql(left, right); break; case MathOperator.Minus: sql = factory.CreateMinusSql(left, right); break; case MathOperator.Multiply: sql = factory.CreateMultiplySql(left, right); break; case MathOperator.Divided: sql = factory.CreateDividedSql(left, right); break; case MathOperator.Mod: sql = factory.CreateModSql(left, right); break; case MathOperator.Power: sql = factory.CreatePowerSql(left, right); break; } state.SetDataSql(this, isFullName, sql); return(sql); }