Esempio n. 1
0
            public SqlBuilder GetCountSql <TRecord>(IQuery aIQuery)
                where TRecord : class, IRecord, new()
            {
                //aQueryのDownキャスト
                Query <TRecord> aQuery = (Query <TRecord>)aIQuery;
                //TRecord型レコードとViewのマッピング情報を取得する
                RecordViewTableMap <TRecord> aRecordViewMap = _aRecordViewTableMapFactory.CreateRecordViewTableMap <TRecord>();
                //TRecordに対応するSqlPodを生成する
                SqlPod aSqlPod = _aSqlPodFactory.CreateSqlPod <TRecord>();

                //aQueryが持つ条件のプロパティ型リテラル値をDBデータ型に型変換する
                aQuery = aRecordViewMap.CastQuery(aQuery);

                //SQL文を作成する
                RecordViewTableMap <TRecord> aRecordViewTableMap = _aRecordViewTableMapFactory.CreateRecordViewTableMap <TRecord>();

                return(aSqlPod.GetCountSql(aQuery, aRecordViewTableMap));
            }
Esempio n. 2
0
            public SqlBuilder GetSelectSql <TRecord>(Query <TRecord> query
                                                     , LoadMode aLoadMode)
                where TRecord : class, IRecord, new()
            {
                //TRecord型レコードとViewのマッピング情報を取得する
                RecordViewTableMap <TRecord> aRecordViewMap = _aRecordViewTableMapFactory.CreateRecordViewTableMap <TRecord>();
                //TRecordに対応するSqlPodを生成する
                SqlPod aSqlPod = _aSqlPodFactory.CreateSqlPod <TRecord>();

                //aQueryが持つ条件のプロパティ型リテラル値をDBデータ型に型変換する
                query = aRecordViewMap.CastQuery(query);

                //SQL文を作成する
                //引数aLoadModeとaRecordTableMapを追加したのは苦渋の決断
                //(SqlBuilderがテーブルのメタ情報を扱うことを想定していなかったので、後付による拡張が綺麗にならない)
                RecordViewTableMap <TRecord> aRecordViewTableMap = _aRecordViewTableMapFactory.CreateRecordViewTableMap <TRecord>();

                return(aSqlPod.GetSelectSql(query, aRecordViewTableMap));
            }