/// <inheritdoc/> public virtual async Task <T> Edit(T edited, bool resetOld) { if (edited == null) { throw new ArgumentNullException(nameof(edited)); } bool lazyLoading = Database.ChangeTracker.LazyLoadingEnabled; Database.ChangeTracker.LazyLoadingEnabled = false; try { T old = await GetWithTracking(edited.ID); if (resetOld) { old = Merger.Nullify(old); } Merger.Complete(old, edited, x => x.GetCustomAttribute <LoadableRelationAttribute>() == null); await EditRelations(old, edited, resetOld); await Database.SaveChangesAsync(); return(old); } finally { Database.ChangeTracker.LazyLoadingEnabled = lazyLoading; Database.ChangeTracker.Clear(); } }