public override EntityState DetermineState(EntityEntry entry)
            {
                if (!entry.IsKeySet)
                {
                    entry.GetInfrastructure()[entry.Metadata.FindPrimaryKey().Properties.Single()] = 777;
                    return(EntityState.Added);
                }

                return(base.DetermineState(entry));
            }
Example #2
0
            public override void AddEntity(Object dataContext, ODataResourceBase entry)
            {
                var context = (DbContext)dataContext;
                EntityEntry <TEntity> entityEntry = context.Add(CreateEntity(context, entry));

                IReadOnlyList <IProperty> keyProperties = _entityType.FindPrimaryKey().Properties;

                for (int i = 0; i < keyProperties.Count; i++)
                {
                    if (keyProperties[i].ValueGenerated == ValueGenerated.OnAdd)
                    {
                        entityEntry.GetInfrastructure().MarkAsTemporary(keyProperties[i]);
                    }
                }
            }
Example #3
0
            public override void AddEntity(Object dataContext, Object entity)
            {
                var                   context = (T)dataContext;
                DbSet <TEntity>       dbSet   = _getEntitySet(context);
                EntityEntry <TEntity> entry   = dbSet.Add((TEntity)entity);

                InitKey(context);
                for (int i = 0; i < _key.Properties.Count; i++)
                {
                    IProperty property = _key.Properties[i];
                    if (property.ValueGenerated == ValueGenerated.OnAdd)
                    {
                        entry.GetInfrastructure().MarkAsTemporary(property);
                    }
                }
            }
            public override void AddEntity(Object dataContext, ODataResourceBase entry)
            {
                var context = (DbContext)dataContext;
                EntityEntry <TEntity> entityEntry   = context.Add(CreateEntity(context, entry));
                InternalEntityEntry   internalEntry = entityEntry.GetInfrastructure();

                AddInstanceAnnotation(entry, internalEntry);

                IReadOnlyList <IProperty> keyProperties = _entityType.FindPrimaryKey().Properties;

                for (int i = 0; i < keyProperties.Count; i++)
                {
                    if (keyProperties[i].ValueGenerated == ValueGenerated.OnAdd)
                    {
                        Object value = internalEntry.GetCurrentValue(keyProperties[i]);
                        internalEntry.SetTemporaryValue(keyProperties[i], value, false);
                    }
                }
            }
 /// <summary>
 ///     This is an internal API that supports the Entity Framework Core infrastructure and not subject to
 ///     the same compatibility standards as public APIs. It may be changed or removed without notice in
 ///     any release. You should only use it directly in your code with extreme caution and knowing that
 ///     doing so can result in application failures when updating to a new Entity Framework Core release.
 /// </summary>
 protected override object NextValue(EntityEntry entry)
 => entry.GetInfrastructure().EntityType.GetDiscriminatorValue() !;
            public override EntityState DetermineState(EntityEntry entry)
            {
                if (!entry.IsKeySet)
                {
                    entry.GetInfrastructure()[entry.Metadata.FindPrimaryKey().Properties.Single()] = 777;
                    return EntityState.Added;
                }

                return base.DetermineState(entry);
            }
 public static Dictionary <IProperty, object> GetDatabaseValues(this EntityEntry entry, DbContext context)
 => entry.GetInfrastructure().GetDatabaseValues(context);
 public static void Reload(this EntityEntry entityEntry, DbContext context)
 => entityEntry.GetInfrastructure().Reload(context);
 public static void SetOriginalValues(this EntityEntry entry, Dictionary <IProperty, object> values)
 => entry.GetInfrastructure().SetOriginalValues(values);