Пример #1
0
        public InterceptorResult Apply(IDataContext context, BeforeQuery eventArgs)
        {
            var query = eventArgs.Query as IQuery <T>;

            query.Where(_clauseToAppend);
            return(InterceptorResult.Succeeded());
        }
Пример #2
0
 public InterceptorResult Apply(IDataContext dataContext, T eventArgs)
 {
     WasCalled = true;
     Thread.Sleep(1);
     CallTime = DateTime.Now;
     return(InterceptorResult.Succeeded());
 }
Пример #3
0
        public InterceptorResult Apply(IDataContext dataContext, BeforeSave eventArgs)
        {
            var efContext = dataContext as DbContext;

            if (efContext == null)
            {
                throw new InvalidOperationException(
                          "Entity Framework Interceptors must be used with Entity Framework Contexts");
            }

            string userName = _userNameService.GetCurrentUserName();

#if DEBUG
            var addedEntities    = efContext.ChangeTracker.Entries().Where(x => x.State == EntityState.Added).Where(e => e.Entity is IAuditableEntity).ToList();
            var modifiedEntities = efContext.ChangeTracker.Entries().Where(x => x.State == EntityState.Modified).Where(e => e.Entity is IAuditableEntity).ToList();
            var deletedEntities  = efContext.ChangeTracker.Entries().Where(x => x.State == EntityState.Deleted).Where(e => e.Entity is IAuditableEntity).ToList();
#endif

            var modifiedDate = DateTime.Now;
            efContext.ChangeTracker.Entries().Where(x => x.State == EntityState.Added)
            .Where(e => e.Entity is IAuditableEntity)
            .ToList()
            .ForEach(e =>
            {
                var entity = e.Entity as IAuditableEntity;
                if (entity != null)
                {
                    entity.CreatedDate  = modifiedDate;
                    entity.ModifiedDate = modifiedDate;
                    entity.CreatedBy    = userName;
                    entity.ModifiedBy   = userName;
                }
            });

            efContext.ChangeTracker.Entries().Where(x => x.State == EntityState.Modified)
            .Where(e => e.Entity is IAuditableEntity)
            .ToList()
            .ForEach(e =>
            {
                var entity = e.Entity as IAuditableEntity;
                if (entity != null)
                {
                    entity.ModifiedDate = modifiedDate;
                    entity.ModifiedBy   = userName;
                }
            });
            efContext.ChangeTracker.DetectChanges();
            return(InterceptorResult.Succeeded());
        }
        public void WhenCommitIsCalledPreSaveAndPostSaveInterceptorsAreCalled()
        {
            //arrange
            var mockPreSave = MockRepository.GenerateMock <IInterceptor <PreSaveEventArgs> >();

            mockPreSave.Expect(x => x.Execute(Arg <IDataContext> .Is.Same(target), Arg <PreSaveEventArgs> .Is.Anything)).
            Return(InterceptorResult.Succeeded());
            mockPreSave.Expect(x => x.Priority).Return(1);
            target.EventManager.Register(mockPreSave);

            var mockPostSave = MockRepository.GenerateMock <IInterceptor <PostSaveEventArgs> >();

            mockPostSave.Expect(x => x.Execute(Arg <IDataContext> .Is.Same(target), Arg <PostSaveEventArgs> .Is.Anything)).
            Return(InterceptorResult.Succeeded());
            mockPostSave.Expect(x => x.Priority).Return(1);
            target.EventManager.Register(mockPostSave);

            //Act
            target.Commit();

            //Assert
            mockPreSave.VerifyAllExpectations();
            mockPostSave.VerifyAllExpectations();
        }