/// <summary>
        /// Creates a sequence.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="sequence"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        /// <exception cref="InvalidOperationException"></exception>
        public static bool CreateSequence <T>(this DbContext context, DbSequence <T> sequence)
            where T : struct
        {
            var provider = context.GetService <ISequenceProvider>();

            if (provider == null)
            {
                throw new InvalidOperationException("No SequenceProvider found");
            }

            var res = provider.CreateSequence(sequence);

            return(res);
        }
        /// <summary>
        /// Creates a sequence asynchronously.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="sequence"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        /// <exception cref="InvalidOperationException"></exception>
        public static async Task <bool> CreateSequenceAsync <T>(this DbContext context, DbSequence <T> sequence, CancellationToken ct = default)
            where T : struct
        {
            var provider = context.GetService <ISequenceProvider>();

            if (provider == null)
            {
                throw new InvalidOperationException("No SequenceProvider found");
            }

            var res = await provider.CreateSequenceAsync(sequence, ct);

            return(res);
        }