public SimpleQuery LeftJoin(DynamicTable dynamicTable, out dynamic queryObjectReference) { return(OuterJoin(dynamicTable, out queryObjectReference)); }
public SimpleQuery LeftJoin(DynamicTable dynamicTable) { return(OuterJoin(dynamicTable)); }
public SimpleQuery Join(DynamicTable dynamicTable, out dynamic queryObjectReference) { return(Join(dynamicTable, JoinType.Inner, out queryObjectReference)); }
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result) { if (base.TryInvokeMember(binder, args, out result)) { return(true); } if (_dataStrategy != null) { var table = new DynamicTable(_name, _dataStrategy); try { if (table.TryInvokeMember(binder, args, out result)) { _dataStrategy.SetMemberAsTable(this, table); return(true); } } catch (InvalidOperationException ex) { if (!ex.Message.StartsWith("Method")) { throw; } } // Or it could be a schema reference... var schema = new DynamicSchema(_name, _dataStrategy); try { if (schema.TryInvokeMember(binder, args, out result)) { _dataStrategy.SetMemberAsSchema(this); return(true); } } catch (KeyNotFoundException) { throw new InvalidOperationException(string.Format("Method {0} not recognised", binder.Name)); } } var dataStrategy = FindDataStrategyInHierarchy(); if (dataStrategy != null) { var command = CommandFactory.GetCommandFor(binder.Name); if (command != null) { if (!ReferenceEquals(_owner, null)) { var schema = dataStrategy.SetMemberAsSchema(_owner); var table = schema.GetTable(_name); table.TryInvokeMember(binder, args, out result); } else { throw new InvalidOperationException(string.Format("Method {0} not recognised", binder.Name)); } //result = command.Execute(dataStrategy, table, binder, args); } else { if (dataStrategy.IsExpressionFunction(binder.Name, args)) { result = new SimpleExpression(this, new SimpleFunction(binder.Name, args), SimpleExpressionType.Function); } else { result = new FunctionReference(binder.Name, this, args); } } return(true); } throw new InvalidOperationException(string.Format("Method {0} not recognised", binder.Name)); }
private bool NewDynamicTable(GetMemberBinder binder, out object result) { result = new DynamicTable(binder.Name, this); return true; }
internal DynamicTable SetMemberAsTable(ObjectReference reference, DynamicTable table) { if (reference == null) throw new ArgumentNullException("reference"); _members.TryUpdate(reference.GetName(), table, reference); return (DynamicTable) _members[reference.GetName()]; }