Beispiel #1
0
        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>());
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        protected IEnumerable <dynamic> Run()
        {
            IEnumerable <SimpleQueryClauseBase> unhandledClauses;

            return(SimpleResultSet.Create(_adapter.RunQuery(this, out unhandledClauses), _tableName, _dataStrategy).Cast <dynamic>());
        }