/// <summary> /// プロパティに結びつく列定義として初期化する /// </summary> /// <param name="environment">この列定義がベースとするDB接続環境</param> /// <param name="instance">プロパティを直接保持するオブジェクト</param> /// <param name="property">プロパティ情報</param> /// <param name="table">この列が所属する<see cref="ITable"/></param> /// <param name="name">DB上の列名</param> /// <param name="dbType">DB上の型</param> /// <param name="flags">列定義オプションフラグ</param> /// <param name="source">列を生成する元となった式</param> public Column(DbEnvironment environment, object instance, PropertyInfo property, ITable table, string name, IDbType dbType, ColumnFlags flags = 0, ElementCode source = null) { this.Environment = environment; this.Instance = instance; this.Property = property; this.Table = table; this.Name = name; this.DbType = dbType; this.Flags = flags; this.Source = source; }
/// <summary> /// データベースに変化分を適用する /// </summary> /// <param name="context">コマンド生成先のバッファ</param> /// <param name="databaseDelta">データベース変化分</param> public abstract void ApplyDatabaseDelta(ElementCode context, IDatabaseDelta databaseDelta);
/// <summary> /// SQL文を生成する /// </summary> /// <param name="context">生成先のコンテキスト</param> public void ToElementCode(ElementCode context) { context.Concat(this.Name); }
/// <summary> /// プロパティに列定義をバインドして取得する、バインド済みなら取得のみ行われる /// </summary> /// <param name="propertyName">プロパティ名</param> /// <param name="name">DB上での列名</param> /// <param name="dbType">DB上での型</param> /// <param name="flags">列に対するオプションフラグ</param> /// <param name="source">列を生成する基となった式</param> /// <returns>列定義</returns> public Column BindColumn(string propertyName, string name, IDbType dbType, ColumnFlags flags = 0, ElementCode source = null) { var column = this.ColumnMap.TryGetByPropertyName(propertyName); if (column == null) { this.ColumnMap.Add(column = new Column(this.Environment, this.Columns, typeof(TColumns).GetProperty(propertyName), this, name, dbType, flags, source)); } return(column); }
public Visitor(ElementCode exprInProgress, ColumnMap colDefDic = null) { _ExprInProgress = exprInProgress; _ColDefDic = colDefDic; }
public TypeWise(ElementCode editableExpr) => _EditableExpr = editableExpr;