///<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();
            }
        }
Beispiel #2
0
        ///<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);
        }
Beispiel #3
0
        ///<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);
        }
Beispiel #4
0
        ///<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();
            }
        }