internal static object UpdateByKeyFields(string tableName, DataStrategy dataStrategy, object entity, IEnumerable<string> keyFieldNames) { var record = ObjectToDictionary(entity); var criteria = GetCriteria(keyFieldNames, record); var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(tableName, criteria); return dataStrategy.Update(tableName, record, criteriaExpression); }
internal static object UpdateByKeyFields(string tableName, DataStrategy dataStrategy, object entity, IEnumerable <string> keyFieldNames) { var record = ObjectToDictionary(entity); var criteria = GetCriteria(keyFieldNames, record); var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(tableName, criteria); return(dataStrategy.Update(tableName, record, criteriaExpression)); }
private static object UpdateUsingKeys(DataStrategy dataStrategy, DynamicTable table, object[] args) { var record = ObjectToDictionary(args[0]); var list = record as IList<IDictionary<string, object>>; if (list != null) return dataStrategy.UpdateMany(table.GetQualifiedName(), list); var dict = record as IDictionary<string, object>; return dataStrategy.Update(table.GetQualifiedName(), dict); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var criteria = args.OfType<SimpleExpression>().SingleOrDefault() ?? new SimpleEmptyExpression(); var data = binder.NamedArgumentsToDictionary(args).Where(kv=>!(kv.Value is SimpleExpression)).ToDictionary(); var updatedCount = dataStrategy.Update(table.GetQualifiedName(), data, criteria); return updatedCount.ResultSetFromModifiedRowCount(); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (args.Length != 1) throw new ArgumentException("Incorrect number of arguments to Update method."); var record = ObjectToDictionary(args[0]); var list = record as IList<IDictionary<string, object>>; if (list != null) return dataStrategy.UpdateMany(table.GetQualifiedName(), list); var dict = record as IDictionary<string, object>; return dataStrategy.Update(table.GetQualifiedName(), dict); }
internal static object UpdateByKeyFields(string tableName, DataStrategy dataStrategy, object entity, IEnumerable<string> keyFieldNames) { var record = ObjectToDictionary(entity); var list = record as IList<IDictionary<string, object>>; if (list != null) return dataStrategy.UpdateMany(tableName, list, keyFieldNames.ToList()); var dict = record as IDictionary<string, object>; var criteria = GetCriteria(keyFieldNames, dict); var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(tableName, criteria); return dataStrategy.Update(tableName, dict, criteriaExpression); }
private static object UpdateUsingKeys(DataStrategy dataStrategy, DynamicTable table, object[] args) { var record = ObjectToDictionary(args[0]); var list = record as IList <IDictionary <string, object> >; if (list != null) { return(dataStrategy.UpdateMany(table.GetQualifiedName(), list)); } var dict = record as IDictionary <string, object>; return(dataStrategy.Update(table.GetQualifiedName(), dict)); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (binder.HasSingleUnnamedArgument()) { return UpdateByKeyFields(table.GetQualifiedName(), dataStrategy, args[0], MethodNameParser.ParseCriteriaNamesFromMethodName(binder.Name)); } var criteria = MethodNameParser.ParseFromBinder(binder, args); var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), criteria); var data = binder.NamedArgumentsToDictionary(args) .Where(kvp => !criteria.ContainsKey(kvp.Key)) .ToDictionary(); return dataStrategy.Update(table.GetQualifiedName(), data, criteriaExpression); }
internal static object UpdateByKeyFields(string tableName, DataStrategy dataStrategy, object entity, IEnumerable <string> keyFieldNames) { var record = UpdateCommand.ObjectToDictionary(entity); var list = record as IList <IDictionary <string, object> >; if (list != null) { return(dataStrategy.UpdateMany(tableName, list, keyFieldNames)); } var dict = record as IDictionary <string, object>; var criteria = GetCriteria(keyFieldNames, dict); var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(tableName, criteria); return(dataStrategy.Update(tableName, dict, criteriaExpression)); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { if (binder.HasSingleUnnamedArgument()) { return(UpdateByKeyFields(table.GetQualifiedName(), dataStrategy, args[0], MethodNameParser.ParseCriteriaNamesFromMethodName(binder.Name))); } var criteria = MethodNameParser.ParseFromBinder(binder, args); var criteriaExpression = ExpressionHelper.CriteriaDictionaryToExpression(table.GetQualifiedName(), criteria); var data = binder.NamedArgumentsToDictionary(args) .Where(kvp => !criteria.ContainsKey(kvp.Key)) .ToDictionary(); return(dataStrategy.Update(table.GetQualifiedName(), data, criteriaExpression)); }
private static object UpdateUsingOriginalValues(DataStrategy dataStrategy, DynamicTable table, object[] args) { var newValues = ObjectToDictionary(args[0]); var newValuesList = newValues as IList<IDictionary<string, object>>; if (newValuesList != null) { var originalValuesList = ObjectToDictionary(args[1]) as IList<IDictionary<string, object>>; if (originalValuesList == null) throw new InvalidOperationException("Parameter type mismatch; both parameters to Update should be same type."); return dataStrategy.UpdateMany(table.GetQualifiedName(), newValuesList, originalValuesList); } var newValuesDict = newValues as IDictionary<string, object>; var originalValuesDict = ObjectToDictionary(args[1]) as IDictionary<string, object>; if (originalValuesDict == null) throw new InvalidOperationException("Parameter type mismatch; both parameters to Update should be same type."); return dataStrategy.Update(table.GetQualifiedName(), newValuesDict, originalValuesDict); }
public object Execute(DataStrategy dataStrategy, DynamicTable table, InvokeMemberBinder binder, object[] args) { var criteria = args.OfType <SimpleExpression>().SingleOrDefault() ?? new SimpleEmptyExpression(); var data = binder.NamedArgumentsToDictionary(args).Where(kv => !(kv.Value is SimpleExpression)).ToDictionary(); if (data.Count == 0) { data = args.OfType <IDictionary <string, object> >().SingleOrDefault(); } if (data == null) { throw new SimpleDataException("Could not resolve data."); } var updatedCount = dataStrategy.Update(table.GetQualifiedName(), data, criteria); return(updatedCount.ResultSetFromModifiedRowCount()); }
private static object UpdateUsingOriginalValues(DataStrategy dataStrategy, DynamicTable table, object[] args) { var newValues = ObjectToDictionary(args[0]); var newValuesList = newValues as IList <IDictionary <string, object> >; if (newValuesList != null) { var originalValuesList = ObjectToDictionary(args[1]) as IList <IDictionary <string, object> >; if (originalValuesList == null) { throw new InvalidOperationException("Parameter type mismatch; both parameters to Update should be same type."); } return(dataStrategy.UpdateMany(table.GetQualifiedName(), newValuesList, originalValuesList)); } var newValuesDict = newValues as IDictionary <string, object>; var originalValuesDict = ObjectToDictionary(args[1]) as IDictionary <string, object>; if (originalValuesDict == null) { throw new InvalidOperationException("Parameter type mismatch; both parameters to Update should be same type."); } return(dataStrategy.Update(table.GetQualifiedName(), newValuesDict, originalValuesDict)); }