/// <summary> /// Возвращает только изменения конкретных полей объектов /// </summary> public static IList <FieldChange> GetFieldChanges <T>(IUnitOfWork uow, int[] entitiesIds, Expression <Func <T, object> > field) where T : IDomainObject { ChangedEntity changedEntityAlias = null; var prop = Gamma.Utilities.PropertyUtil.GetName(field); var changes = uow.Session.QueryOver <FieldChange>() .Left.JoinAlias(fc => fc.Entity, () => changedEntityAlias) .Where(() => changedEntityAlias.EntityClassName == typeof(T).Name) .Where(() => changedEntityAlias.EntityId.IsIn(entitiesIds)) .Where(fc => fc.Path == prop) .List(); return(changes); }
public void OnPostDelete(PostDeleteEvent deleteEvent) { var entity = deleteEvent.Entity as IDomainObject; var type = NHibernateProxyHelper.GuessClass(entity); if (!TrackerMain.Factory?.NeedTrace(type) ?? false) { return; } if (changes.Exists(di => di.Operation == EntityChangeOperation.Delete && di.EntityClassName == type.Name && di.EntityId == entity.Id)) { return; } var hce = new ChangedEntity(EntityChangeOperation.Delete, entity, new List <FieldChange>()); changes.Add(hce); }