protected virtual void Dispose(bool disposing)
 {
     if (!disposedValue)
     {
         if (disposing)
         {
             _db?.Dispose();
         }
         _transaction = null;
         DbModelFactory.RemoveObserver(this);
         disposedValue = true;
     }
 }