Пример #1
0
 public virtual void SaveChanges()
 {
     foreach (var item in _uow.Flush())
     {
         var repository = GetRepository(item);
         if (repository == null)
         {
             throw new InvalidOperationException($"A repository for type {item} was not supplied");
         }
         var mapper    = repository.Mapper;
         var aggregate = item;
         var state     = _state.Get(item);
         if (state.Status == EntityStatus.Deleted)
         {
             mapper.Delete(item, state);
             Publish(ProxyUtils.GetTargetEntityType(item), x => x.Delete(aggregate, this));
         }
         else if (state.Status == EntityStatus.Dirty)
         {
             mapper.Update(item, state);
             Publish(ProxyUtils.GetTargetEntityType(item), x => x.Update(aggregate, this));
         }
         else if (state.Status == EntityStatus.New)
         {
             mapper.Insert(item, state);
             Publish(ProxyUtils.GetTargetEntityType(item), x => x.Create(aggregate, this));
         }
         state.Clean();
     }
     Flushed(this, new GraphSessionFlushedEventArgs(this));
 }
Пример #2
0
        public void Register(object item)
        {
            var state = _entityStateCache.Get(item);

            if (state.IsReadonly)
            {
                return;
            }
            if (_items.Contains(item))
            {
                return;
            }
            _items.Add(item);
            OnRegistered(item);
        }
Пример #3
0
        public void Add(T item)
        {
            AddInternal(item);
            var parentState = _state.Get(_parent);

            parentState.Dirty();
        }
Пример #4
0
        public void Intercept(IInvocation invocation)
        {
            if (IsSetter(invocation))
            {
                _state.Get(invocation.InvocationTarget).Dirty();
            }

            if (invocation.InvocationTarget == null)
            {
                return;
            }

            invocation.Proceed();
        }
Пример #5
0
 public void Delete(object item)
 {
     _entityStateCache.Get(item).Delete();
 }