protected IEnumerable <dynamic> Run() { IEnumerable <SimpleQueryClauseBase> unhandledClauses; var result = _dataStrategy.Run.RunQuery(this, out unhandledClauses); if (unhandledClauses != null) { var unhandledClausesList = unhandledClauses.ToList(); if (unhandledClausesList.Count > 0) { result = new DictionaryQueryRunner(_tableName, result, unhandledClausesList).Run(); } } return(SimpleResultSet.Create(result, _tableName, _dataStrategy).Cast <dynamic>()); }
public override bool TryGetMember(GetMemberBinder binder, out object result) { if (_data.ContainsKey(binder.Name)) { result = _data[binder.Name]; var converted = ConvertResult(result); if (!ReferenceEquals(result, converted)) { _data[binder.Name] = result = converted; } return(true); } if (_tableName == null) { result = null; return(false); } var relatedAdapter = _database.Adapter as IAdapterWithRelation; if (relatedAdapter != null && relatedAdapter.IsValidRelation(_tableName, binder.Name)) { var relatedRows = relatedAdapter.FindRelated(_tableName, _data, binder.Name); if (relatedRows.Count() == 1 && !binder.Name.IsPlural()) { result = new SimpleRecord(relatedRows.Single(), binder.Name, _database); } else { result = new SimpleResultSet(relatedRows.Select(dict => new SimpleRecord(dict, binder.Name, _database))); } return(true); } return(base.TryGetMember(binder, out result)); }
protected IEnumerable <dynamic> Run() { IEnumerable <SimpleQueryClauseBase> unhandledClauses; return(SimpleResultSet.Create(_adapter.RunQuery(this, out unhandledClauses), _tableName, _dataStrategy).Cast <dynamic>()); }