示例#1
0
        /// <summary>
        /// Writes the save audit log entries.
        /// </summary>
        /// <param name="success">if set to <c>true</c> [success].</param>
        /// <param name="entityId">The entity identifier.</param>
        /// <param name="state">The state.</param>
        public void WriteSaveAuditLogEntries(bool success, long entityId, IDictionary <string, object> state)
        {
            if (state == null)
            {
                throw new ArgumentNullException("state");
            }

            if (string.IsNullOrEmpty(SaveDetailsStateKey))
            {
                return;
            }

            IDictionary <long, TDetails> entityDetailsState = GetAuditLogDetailsState(state, SaveDetailsStateKey);

            TDetails entityDetails;

            if (!entityDetailsState.TryGetValue(entityId, out entityDetails))
            {
                // Check for entities being created
                long temporaryId = EventTargetStateHelper.GetTemporaryIdFromId(state, entityId);

                if (!entityDetailsState.TryGetValue(temporaryId, out entityDetails))
                {
                    return;
                }
            }

            OnWriteSaveAuditLogEntries(success, entityDetails);
        }
示例#2
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="SaveGraph" /> class.
        /// </summary>
        /// <param name="entities">The entities.</param>
        /// <exception cref="System.ArgumentNullException">
        ///     entities
        ///     or
        ///     context
        /// </exception>
        public SaveGraph(IEnumerable <IEntity> entities)
        {
            if (entities == null)
            {
                throw new ArgumentNullException("entities");
            }

            Entities = new Dictionary <long, IEntity>();

            foreach (IEntity entity in entities)
            {
                Entities[entity.Id] = entity;
            }

            AcceptedChangeTrackers = new List <IChangeTracker <IMutableIdKey> >( );

            CurrentUtcDate = DateTime.UtcNow;
            State          = new Dictionary <string, object>( );
            Changes        = new Dictionary <long, EntityChanges>( );
            Mapping        = new BidirectionalDictionary <long, long>( );

            EventTargetStateHelper.SetSaveGraph(State, this);
        }
示例#3
0
 /// <summary>
 /// Gets the audit log details state.
 /// </summary>
 /// <param name="state">The state.</param>
 /// <param name="keyName">Name of the key.</param>
 /// <returns></returns>
 private IDictionary <long, TDetails> GetAuditLogDetailsState(IDictionary <string, object> state, string keyName)
 {
     return(EventTargetStateHelper.GetValue <IDictionary <long, TDetails> >(state, keyName, () => new Dictionary <long, TDetails>()));
 }