public virtual void Dispose() { OnDisposed(); lock (Lock) { if (Pool != null) { Pool.Dispose(); //критично уничтожить pool до repository } if (Repository != null) { Repository.Dispose(); } } }