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); } }
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); }
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)); }