/// <summary> /// Persist the given entity using the behavior specified. /// </summary> /// <param name="entityContext"> /// The entity context. /// </param> /// <param name="entityType"> /// The entity type. /// </param> /// <param name="entity"> /// The entity. /// </param> /// <param name="behaviors"> /// The behaviors. /// </param> /// <param name="entitiesWritten"> /// The entities written. /// </param> /// <returns> /// The entity key. /// </returns> private static Key Persist(EntityContext entityContext, Type entityType, object entity, Behaviors behaviors, IdentitySet entitiesWritten) { var entityWriter = new EntityWriter(entityContext, entityType, entity, behaviors, entitiesWritten); return(entityWriter.Persist()); }
/// <summary> /// Persist the given entity using the behavior specified. /// </summary> /// <param name="entityContext"> /// The entity context. /// </param> /// <param name="entityType"> /// The entity type. /// </param> /// <param name="entity"> /// The entity. /// </param> /// <param name="ignoreKeys"> /// The keys to ignore. /// </param> /// <param name="behaviors"> /// The behaviors. /// </param> /// <param name="entitiesWritten"> /// The entities written. /// </param> /// <param name="write"> /// if <c>true</c> writes the entity, otherwise only traversing. /// </param> /// <param name="isRoot"> /// if <c>true</c> if entity is the root, otherwise <c>false</c>. /// </param> /// <returns> /// The entity key. /// </returns> private static Key Persist(EntityContext entityContext, Type entityType, object entity, ISet <Key> ignoreKeys, Behaviors behaviors, ISet <object> entitiesWritten, bool write = true, bool isRoot = false) { var entityWriter = new EntityWriter(entityContext, ignoreKeys, behaviors, entitiesWritten); return(entityWriter.Persist(entityType, entity, write, isRoot)); }
/// <summary> /// Stores an entity instance to the database. /// </summary> /// <param name="entity"> /// The entity to store. /// </param> /// <param name="ignoreKeys"> /// The keys to ignore. /// </param> /// <param name="behaviors"> /// The behaviors. /// </param> /// <typeparam name="T"> /// The entity type. /// </typeparam> public void Persist <T>(T entity, ISet <Key> ignoreKeys, Behaviors behaviors) where T : class { EntityWriter.Persist(this, entity, ignoreKeys, behaviors); if (behaviors.BypassWriteCache()) { this.entitiesWritten.Remove(entity); } }
/// <summary> /// Stores an entity instance to the database. /// </summary> /// <param name="entity"> /// The entity to store. /// </param> /// <param name="behaviors"> /// The behaviors. /// </param> /// <typeparam name="T"> /// The entity type. /// </typeparam> public void Persist <T>(T entity, Behaviors behaviors) where T : class { if (behaviors.IsCreateNew() && !behaviors.DoNotCache() && !behaviors.BypassWriteCache()) { var entityReference = this.EntityReferenceForType(entity.GetType()); if (entityReference != null) { bool newEntity; var key = entityReference.GetKeyFromEntity(entity, out newEntity); if (!newEntity) { var entitySpec = new EntitySpec(entityReference, key); this.entitySpecsWritten.Remove(entitySpec); } } } EntityWriter.Persist(this, entity, behaviors); }