internal override void CastToSqlLiteralType(ICaster caster , IViewInfoGetter viewInfoGetter) { if (_operand != null) { _operand.CastToSqlLiteralType(caster, viewInfoGetter); } }
internal override void CastToSqlLiteralType(ICaster caster , IViewInfoGetter viewInfoGetter) { for (int i = 0; i <= _operands.Length - 1; i++) { if (_operands[i] is Literal) { _operands[i] = CreateSqlLiteral(caster , viewInfoGetter , _lOperand , ((Literal)_operands[i]).Value); } } }
internal SqlLiteral CreateSqlLiteral(ICaster caster , IViewInfoGetter viewInfoGetter , val val , object literal) { string propertyName = val.PropertyName; ViewColumnInfo viewColumnInfo = viewInfoGetter.GetViewColumnInfo(propertyName); if (viewColumnInfo == null) { throw new NotExistsViewColumnException( propertyName + "はレコード" + viewInfoGetter.GetViewInfo().Name + "に存在しない、" + "またはSELECT句と紐付いていません"); } string sqlLiteral = caster.CastToSqlLiteralType(literal, viewColumnInfo); return(new SqlLiteral(sqlLiteral)); }
internal override void CastToSqlLiteralType(ICaster caster , IViewInfoGetter viewInfoGetter) { if (_fromOperand is Literal) { _fromOperand = CreateSqlLiteral(caster , viewInfoGetter , _operand , ((Literal)_fromOperand).Value); } if (_toOperand is Literal) { _toOperand = CreateSqlLiteral(caster , viewInfoGetter , _operand , ((Literal)_toOperand).Value); } }
internal override void CastToSqlLiteralType(ICaster caster , IViewInfoGetter viewInfoGetter) { if (_lOperand is val && _rOperand is Literal) { _rOperand = CreateSqlLiteral(caster , viewInfoGetter , (val)_lOperand , ((Literal)_rOperand).Value); } else if (_lOperand is Literal && _rOperand is val) { _lOperand = CreateSqlLiteral(caster , viewInfoGetter , (val)_rOperand , ((Literal)_lOperand).Value); } else if (_lOperand is val && _rOperand is val) { return; } }
//保持する抽出条件から、NULL表現値を被演算子に持つ抽出条件を削除し、 //プロパティ型からSQLリテラル型に型変換する void IQueryExtention <TRecord> .CastToSqlLiteralType(ICaster caster, IViewInfoGetter viewInfoGetter) { //ループの操作対象をループ内で削除するので、逆順にループさせないといけない int i = _criteria.Count - 1; while (i >= 0) { //Queryオブジェクトに格納された値オブジェクトがNULL表現値の場合、その条件式を削除する _criteria[i] = _criteria[i].RemoveExpIfNull(caster); if (_criteria[i] == null) { //配列の要素を削除する _criteria.RemoveAt(i); i -= 1; continue; } //Queryオブジェクトに格納された値オブジェクトを型変換する _criteria[i].CastToSqlLiteralType(caster, viewInfoGetter); i -= 1; } }
internal abstract void CastToSqlLiteralType(ICaster caster , IViewInfoGetter viewInfoGetter);
internal override void CastToSqlLiteralType(ICaster caster , IViewInfoGetter viewInfoGetter) { return; }