/// <summary>
        /// Upserts the given rows.
        /// </summary>
        /// <param name="objs">The objects to upsert.</param>
        /// <param name="commandTimeout">Number of seconds before command execution timeout.</param>
        /// <returns>The number of upserted rows.</returns>
        public int BulkUpsert(IEnumerable <T> objs, int commandTimeout = 30)
        {
            int count;

            if (AutoKeyColumn != null)
            {
                long maxAutoKey = MaxAutoKey();
                Items.Add(objs);
                count = Access.BulkUpsert(objs, commandTimeout);
                GetList($"WHERE {AutoKeyColumn.ColumnName} > {maxAutoKey}", commandTimeout);
            }
            else
            {
                count = Access.BulkUpsert(objs, commandTimeout);
                if (AutoSyncInsert || AutoSyncUpdate)
                {
                    BulkGet(objs, commandTimeout);
                }
                else
                {
                    Items.Add(objs);
                }
            }
            return(count);
        }