public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { object[] objects; if (binder.CallInfo.ArgumentNames.Count > 0 && binder.CallInfo.ArgumentNames.All(s => !string.IsNullOrWhiteSpace(s))) { objects = new object[] { binder.NamedArgumentsToDictionary(args) }; } else if (args.Length == 0 || args.Length > 2) { throw new ArgumentException("Incorrect number of arguments to Upsert method."); } else { objects = args; } var result = UpsertUsingKeys(dataStrategy, table, objects, !binder.IsResultDiscarded()); return(ResultHelper.TypeResult(result, table, dataStrategy)); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { object result; if (binder.HasSingleUnnamedArgument() || args.Length == 2 && args[1] is ErrorCallback) { result = UpsertByKeyFields(table.GetQualifiedName(), dataStrategy, args[0], MethodNameParser.ParseCriteriaNamesFromMethodName(binder.Name), !binder.IsResultDiscarded(), args.Length == 2 ? (ErrorCallback)args[1] : ((item, exception) => false)); } else { var criteria = MethodNameParser.ParseFromBinder(binder, args); var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), criteria); var data = binder.NamedArgumentsToDictionary(args); result = dataStrategy.Run.Upsert(table.GetQualifiedName(), data, criteriaExpression, !binder.IsResultDiscarded()); } return(ResultHelper.TypeResult(result, table, dataStrategy)); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var result = DoInsert(binder, args, dataStrategy, table.GetQualifiedName()); return(ResultHelper.TypeResult(result, table, dataStrategy)); }