public bool?Update(T entity, params object[] keyValues) { var entry = context.Entry(entity); if (keyValues.Length > 0) { if (entry.State == EntityState.Detached) { T attached = _entity.Find(keyValues); if (attached != null) { var attachedEntry = context.Entry(attached); attachedEntry.CurrentValues.SetValues(entity); } else { entry.State = EntityState.Modified; } } } else { entry.State = EntityState.Modified; } return(SaveChanges()); }