public InterceptorResult Apply(IDataContext context, BeforeQuery eventArgs) { var query = eventArgs.Query as IQuery <T>; query.Where(_clauseToAppend); return(InterceptorResult.Succeeded()); }
public InterceptorResult Apply(IDataContext dataContext, T eventArgs) { WasCalled = true; Thread.Sleep(1); CallTime = DateTime.Now; return(InterceptorResult.Succeeded()); }
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(); }