void IDisposable.Dispose() { if (_contextPool != null) { if (!_contextPool.Return(Context)) { ((IDbContextPoolable)Context).SetPool(null); Context.Dispose(); } _contextPool = null; Context = null; } }
async ValueTask IAsyncDisposable.DisposeAsync() { if (_contextPool != null) { if (!_contextPool.Return(Context)) { ((IDbContextPoolable)Context).SetPool(null); await Context.DisposeAsync().ConfigureAwait(false); } _contextPool = null; Context = null; } }
/// <summary> /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// </summary> public Lease([NotNull] DbContextPool <TContext> contextPool) { _contextPool = contextPool; Context = _contextPool.Rent(); }