public static void DetachLocal <T>(this ZorkDbContext context, T t, int entryId) where T : BaseDataObject { var local = context.Set <T>() .Local .FirstOrDefault(entry => entry.Id.Equals(entryId)); if (local != null) { context.Entry(local).State = EntityState.Detached; } context.Entry(t).State = EntityState.Modified; }
/// <summary> /// Async Method that retrieve first data object matching the given filter. /// </summary> /// <remarks> /// Tracking on data returned is disabled by default. /// </remarks> /// <param name="filter">filter to apply</param> /// <param name="trackingEnabled">true if tracking is needed on data returned, false otherwise.</param> /// <returns>Returns <typeparamref name="TModel" />.</returns> public TModel GetSingle(Expression <Func <TModel, bool> > filter, bool trackingEnabled = false) { var dbQuery = this.modelSet.AsQueryable(); var item = trackingEnabled ? dbQuery.FirstOrDefault(filter) : dbQuery.AsNoTracking().FirstOrDefault(filter); foreach (string fk in this.CollectionNavigationProperties) { context.Entry(item).Collection(fk).Load(); } foreach (string fk in this.ReferenceNavigationProperties) { context.Entry(item).Reference(fk).Load(); } return(item); }