Exemplo n.º 1
0
        /// <summary>
        /// Virtual
        /// </summary>
        /// <param name="baseUowEntry"></param>
        /// <param name="isNotSupported"></param>
        /// <param name="onDispose"></param>
        /// <returns></returns>
        public static UowRef Virtual(IUnitOfWorkEntry baseUowEntry, bool isNotSupported, Action <UowRef> onDispose)
        {
            var entry  = new VirtualUowProxy(baseUowEntry);
            var uowRef = new UowRef(entry, UowRefType.Virtual, isNotSupported);

            entry.OnDispose = () => onDispose?.Invoke(uowRef);
            return(uowRef);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Nothing
        /// </summary>
        /// <param name="isNotSupported"></param>
        /// <param name="onDispose"></param>
        /// <returns></returns>
        public static UowRef Nothing(bool isNotSupported, Action <UowRef> onDispose)
        {
            var entry  = new NothingUowProxy();
            var uowRef = new UowRef(entry, UowRefType.Nothing, isNotSupported);

            entry.OnDispose = () => onDispose?.Invoke(uowRef);
            return(uowRef);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Original
        /// </summary>
        /// <param name="baseUowEntry"></param>
        /// <param name="isolationLevel"></param>
        /// <param name="onDispose"></param>
        /// <returns></returns>
        public static UowRef Original(IUnitOfWorkEntry baseUowEntry, IsolationLevel?isolationLevel, Action <UowRef> onDispose)
        {
            var entry  = new OriginalUowProxy(baseUowEntry);
            var uowRef = new UowRef(entry, UowRefType.Original, false);

            if (isolationLevel is not null)
            {
                entry.IsolationLevel = isolationLevel.Value;
            }

            try
            {
                entry.GetOrBegin();
            }
            catch
            {
                entry.Dispose();
                throw;
            }

            entry.OnDispose = () => onDispose?.Invoke(uowRef);

            return(uowRef);
        }