public static async Task InsertAsync(this AccessorMembers members, ISqlDialect dialect, string connectionString, IReadOnlyDictionary <AccessorMember, object> hash, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); var sql = dialect.InsertInto(members, hash.Keys, hash.Count, false); var parameters = hash.Keys.ToDictionary(k => $"{dialect.Parameter}{dialect.ResolveColumnName(k)}", v => hash[v]); var inserted = await dialect.ExecuteAsync(connectionString, sql, parameters, cancellationToken); Debug.Assert(inserted == 1); }