Ejemplo n.º 1
0
 private void TrackAddedEntities(StateManager stateManager, IEnumerable <object> addedEntities)
 {
     foreach (var addedEntity in addedEntities)
     {
         var addedEntry = stateManager.GetOrCreateEntry(addedEntity);
         if (addedEntry.EntityState == EntityState.Unknown)
         {
             addedEntry.SetEntityState(EntityState.Added);
         }
     }
 }
Ejemplo n.º 2
0
 private async Task TrackAddedEntitiesAsync(
     StateManager stateManager,
     IEnumerable <object> addedEntities,
     CancellationToken cancellationToken = default(CancellationToken))
 {
     foreach (var addedEntity in addedEntities)
     {
         var addedEntry = stateManager.GetOrCreateEntry(addedEntity);
         if (addedEntry.EntityState == EntityState.Unknown)
         {
             await addedEntry.SetEntityStateAsync(
                 EntityState.Added, acceptChanges : false, cancellationToken : cancellationToken).WithCurrentCulture();
         }
     }
 }
Ejemplo n.º 3
0
        public virtual IEnumerable <EntityEntry> TraverseGraph([NotNull] object entity)
        {
            Check.NotNull(entity, "entity");

            var entry = new EntityEntry(_context.Service, _stateManager.GetOrCreateEntry(entity));

            if (entry.State != EntityState.Unknown)
            {
                yield break;
            }

            yield return(entry);

            if (entry.State != EntityState.Unknown)
            {
                var navigations = entry.StateEntry.EntityType.Navigations;

                foreach (var navigation in navigations)
                {
                    var navigationValue = entry.StateEntry[navigation];

                    if (navigationValue != null)
                    {
                        if (navigation.IsCollection())
                        {
                            foreach (var relatedEntity in (IEnumerable)navigationValue)
                            {
                                foreach (var relatedEntry in TraverseGraph(relatedEntity))
                                {
                                    yield return(relatedEntry);
                                }
                            }
                        }
                        else
                        {
                            foreach (var relatedEntry in TraverseGraph(navigationValue))
                            {
                                yield return(relatedEntry);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public virtual EntityEntry <TEntity> Entry <TEntity>([NotNull] TEntity entity)
        {
            Check.NotNull(entity, "entity");

            return(new EntityEntry <TEntity>(_stateManager.GetOrCreateEntry(entity)));
        }