public async Task <int> CreateAsync(T newInstance) { if (newInstance is null) { throw new ArgumentNullException(nameof(newInstance)); } (string createQuery, QueryParameter[] parameters) = SqlQueryGenerator.GenerateInsertQuery(newInstance); int affectedRowCount = await template.ExecuteAsync(createQuery, parameters) .ConfigureAwait(false); if (affectedRowCount != 1) { throw new InvalidOperationException($"The INSERT Query affected {affectedRowCount} rows -> should only affect 1"); } string getLastGivenIdentityQuery = SqlQueryGenerator.GenerateGetLastIdentityQuery(); return(await template.QuerySingleInt32Async(getLastGivenIdentityQuery) .ConfigureAwait(false)); }