/// <summary>
 /// Inserts the objects into the database, replacing existing entries if the given primary keys already exist.
 /// </summary>
 /// <returns>A Task that completes with a dictionary mapping the provided objects to the objects that were inserted into the database.</returns>
 /// <param name="This">The database connection.</param>
 /// <param name="objects">The objects to be inserted into the database.</param>
 /// <param name="resultSelector">A transform function to apply to each row.</param>
 /// <typeparam name="T">The mapped type.</typeparam>
 public static Task <IReadOnlyDictionary <T, T> > InsertOrReplaceAllAsync <T>(
     this IAsyncDatabaseConnection This,
     IEnumerable <T> objects,
     Func <IReadOnlyList <ResultSetValue>, T> resultSelector) =>
 This.InsertOrReplaceAllAsync(objects, resultSelector, CancellationToken.None);