示例#1
0
 private void PhaseThree(DataStoreMapping mapping, List <object> objects, SelectStatementResult result)
 {
     for (int i = 0; i < objects.Count; i++)
     {
         mapping.Load(objects[i], result.Rows[i].Values, objectMap);
     }
 }
示例#2
0
        private List <object> PhaseTwo(DataStoreMapping mapping, Type objectType, SelectStatementResult result, List <PreResult> toLoad)
        {
            List <object> objects        = new List <object>();
            int           keyColumnIndex = mapping.Table.Columns.IndexOf(GetKeyColumn(mapping));
            List <DataStoreMapping.Column> refColumns = mapping.RefColumns.ToList();

            foreach (var row in result.Rows)
            {
                var key = row.Values[keyColumnIndex];
                if (key == null)
                {
                    throw new DataException("Key cannot be null.");
                }
                var obj = objectMap.Get(objectType, key);
                if (obj == null)
                {
                    obj = mapping.Create();
                    objectMap.Add(objectType, key, obj);
                }
                objects.Add(obj);
                foreach (var member in refColumns)
                {
                    var alias         = "T";
                    var dbCriteria    = BuildByKeyCriteria(member.Type, row.Values[member.Index], alias);
                    var memberMapping = mappings[member.Type];
                    toLoad.Add(new PreResult()
                    {
                        Mapping    = memberMapping,
                        ObjectType = member.Type,
                        Statement  = PhaseOne(memberMapping, member.Type, dbCriteria, alias)
                    });
                }
            }
            return(objects);
        }
示例#3
0
        public SelectedData SelectData(params SelectStatement[] selects)
        {
            var isExternals = selects.Select(stmt => IsTempDatabaseTable(stmt.Table.Name)).ToList();
            List <SelectStatement> mainSelects     = new List <SelectStatement>(selects.Length);
            List <SelectStatement> externalSelects = new List <SelectStatement>(selects.Length);

            for (int i = 0; i < isExternals.Count; ++i)
            {
                (isExternals[i] ? externalSelects : mainSelects).Add(selects[i]);
            }
            var externalResults = (externalSelects.Count == 0 ? Enumerable.Empty <SelectStatementResult>() : tempDataLayer.SelectData(externalSelects.ToArray()).ResultSet).GetEnumerator();
            var mainResults     = (mainSelects.Count == 0 ? Enumerable.Empty <SelectStatementResult>() : legacyDataLayer.SelectData(mainSelects.ToArray()).ResultSet).GetEnumerator();

            SelectStatementResult[] results = new SelectStatementResult[isExternals.Count];
            for (int i = 0; i < results.Length; ++i)
            {
                var enumerator = isExternals[i] ? externalResults : mainResults;
                enumerator.MoveNext();
                results[i] = enumerator.Current;
            }
            return(new SelectedData(results));
        }