///<include file='docs.xml' path='doc/members/member[@name="M:GenericRepositoryAndService.Repository.GenericRepository`1.UpdateOne(`0,System.String,System.Object)"]/*'/> public void UpdateOne(T t, string propertyName, object newValue) { using (DbContext newContext = (DbContext)Activator.CreateInstance(DataContext.GetType())) { T tToChange = FindByIdIncludesInNewContext(newContext, GenericToolsTypeAnalysis.GetKeysValues(t)); PropertyInfo propToChange = typeof(T).GetProperty(propertyName); if (propToChange == null) { throw new PropertyNameNotFoundException(typeof(T), propertyName); } if (!propToChange.CanWrite) { throw new CannotWriteReadOnlyPropertyException(typeof(T), propertyName); } if (newValue != null && !propToChange.PropertyType.IsAssignableFrom(newValue.GetType())) { throw new InvalidArgumentsForClassException(typeof(T)); } typeof(T).GetProperty(propertyName).SetValue(tToChange, newValue); foreach (var entry in newContext.ChangeTracker.Entries()) { entry.State = EntityState.Detached; } newContext.SaveChanges(); } }
///<include file='docs.xml' path='doc/members/member[@name="M:GenericRepositoryAndService.Service.GenericService`1.UpdateCrypted(`0)"]/*'/> public void UpdateCrypted(T t) { T told = FindByIdExcludes(GenericToolsTypeAnalysis.GetKeysValues(t)); t = GenericToolsCRUDCrypt.CryptIfUpdated(told, t); Update(t); }
///<include file='docs.xml' path='doc/members/member[@name="M:GenericRepositoryAndService.Service.GenericService`1.UpdateOneCrypted(`0,System.String,System.Object)"]/*'/> public void UpdateOneCrypted(T t, string propertyName, object newValue) { T told = FindByIdExcludes(GenericToolsTypeAnalysis.GetKeysValues(t)); t = GenericToolsCRUDCrypt.CryptIfUpdatedOne(told, t, propertyName, newValue); UpdateOne(t, propertyName, newValue); }
///<include file='docs.xml' path='doc/members/member[@name="M:GenericRepositoryAndService.Service.GenericService`1.Delete(`0)"]/*'/> public void Delete(T t) { dynamic temprep = _repository; GenericToolsCRUD.PrepareDelete <T>(temprep.DataContext, GenericToolsTypeAnalysis.GetKeysValues(t)); _repository.Delete(t); }
///<include file='docs.xml' path='doc/members/member[@name="M:GenericRepositoryAndService.Repository.GenericRepository`1.UpdateGeneric(System.Data.Entity.DbContext,`0,GenericRepositoryAndService.Repository.GenericRepository{`0}.CustomParam[])"]/*'/> private void UpdateGeneric(DbContext context, T t, params CustomParam[] propss) { using (DbContext newContext = (DbContext)Activator.CreateInstance(context.GetType())) { T tToChange = FindByIdIncludesTrackedInNewContext(newContext, GenericToolsTypeAnalysis.GetKeysValues(t)); tToChange = ModifyOtherProperties(tToChange, t, propss); List <CustomParam> newparams = SetNewParamsFromContext(newContext, propss); foreach (CustomParam newparam in newparams) { typeof(T).GetProperty(newparam.PropertyName).SetValue(tToChange, newparam.Value); } newContext.Entry(tToChange).State = EntityState.Modified; newContext.SaveChanges(); } }