public void AddSubscription(EntityNotificationSubscription <TContext> subscription)
 {
     lock (this)
     {
         if (!_subscriptions.ContainsKey(subscription.EntityId))
         {
             _subscriptions.Add(subscription.EntityId, new List <EntityNotificationSubscription <TContext> >());
         }
         _subscriptions[subscription.EntityId].Add(subscription);
     }
 }
 public void RemoveSubscription(EntityNotificationSubscription <TContext> subscription)
 {
     lock (this)
     {
         if (!_subscriptions.ContainsKey(subscription.EntityId))
         {
             throw new InvalidOperationException($"No subscriptions found for entity {subscription.EntityId}");
         }
         var subscriptions = _subscriptions[subscription.EntityId];
         subscriptions.Remove(subscription);
         if (!subscriptions.Any())
         {
             _subscriptions.Remove(subscription.EntityId);
         }
     }
 }