private static object InsertEntity(object entity, DataStrategy dataStrategy, string tableName, ErrorCallback onError, bool resultRequired) { var dictionary = entity as IDictionary<string, object>; if (dictionary != null) return dataStrategy.Insert(tableName, dictionary, resultRequired); var list = entity as IEnumerable<IDictionary<string, object>>; if (list != null) return dataStrategy.InsertMany(tableName, list, onError, resultRequired); var entityList = entity as IEnumerable; if (entityList != null) { var array = entityList.Cast<object>().ToArray(); var rows = new List<IDictionary<string, object>>(); foreach (var o in array) { dictionary = (o as IDictionary<string, object>) ?? o.ObjectToDictionary(); if (dictionary.Count == 0) { throw new SimpleDataException("Could not discover data in object."); } rows.Add(dictionary); } return dataStrategy.InsertMany(tableName, rows, onError, resultRequired); } dictionary = entity.ObjectToDictionary(); if (dictionary.Count == 0) throw new SimpleDataException("Could not discover data in object."); return dataStrategy.Insert(tableName, dictionary, resultRequired); }