public static async Task InsertAsync <TEntity>(this DapperHybridContext context, TEntity entity)
        {
            var connection = context.Database.GetDbConnection();
            var entityType = context.Model.FindEntityType(typeof(TEntity));

            if (entityType == null)
            {
                throw new InvalidOperationException($"Entity of type {typeof(TEntity).FullName} is not registered in DbContext. Use overload with table name and schema");
            }

            var parameters = context.GetParameters(entity);
            var schema     = entityType.GetSchema();
            var table      = entityType.GetTableName();

            var statement = context.CreateSqlGenerator <TEntity>().Insert(schema, table, parameters.ColumnToParameterMapping);

            await connection.ExecuteAsync(
                statement.Statement,
                parameters,
                transaction : context.Database.CurrentTransaction?.GetDbTransaction())
            .ConfigureAwait(false);
        }