private List <T> SetEntityPreparation <T>(List <T> listEntity, EnumSaveUpdateDelete saveUpdateDelete) where T : class
 {
     if (saveUpdateDelete == EnumSaveUpdateDelete.Save)
     {
         listEntity = EntityPreparationBantuan.GetInstance.DictEntityPreparation["save"].SetPreparationEntity <T>(listEntity);
     }
     else if (saveUpdateDelete == EnumSaveUpdateDelete.Update)
     {
         listEntity = EntityPreparationBantuan.GetInstance.DictEntityPreparation["updatedefined"].SetPreparationEntity <T>(listEntity);
     }
     else
     {
         listEntity = EntityPreparationBantuan.GetInstance.DictEntityPreparation["deleteactivebool"].SetPreparationEntity <T>(listEntity);
     }
     return(listEntity);
 }
Esempio n. 2
0
        public bool SaveUpdateDelete <T1, T2>(T1 entity1, EnumSaveUpdateDelete enumSUDT1, T2 entity2, EnumSaveUpdateDelete enumSUDT2, out T1 @resultEntity1, out T2 @resultEntity2)
            where T1 : class
            where T2 : class
        {
            bool @bool = false;

            @resultEntity1 = null;
            @resultEntity2 = null;
            InterfaceRepoSaveUpdateDelete repoSaveUpdateDelete = new RepoWrapper(new MirrorDBContext());
            var resultRepo = repoSaveUpdateDelete.SaveUpdateDelete <T1, T2>(entity1, enumSUDT1, entity2, enumSUDT2);

            if (resultRepo.IsSuccessConnection & resultRepo.IsSuccessQuery)
            {
                @resultEntity1 = (T1)resultRepo.ReturnValue[0].ReturnValue;
                @resultEntity2 = (T2)resultRepo.ReturnValue[1].ReturnValue;
                @bool          = true;
            }
            return(@bool);
        }
Esempio n. 3
0
        public bool SaveUpdateDelete <T1, T2, T3, T4>(T1 entity1, EnumSaveUpdateDelete enumSUDT1, T2 entity2, EnumSaveUpdateDelete enumSUDT2, T3 entity3, EnumSaveUpdateDelete enumSUDT3, T4 entity4, EnumSaveUpdateDelete enumSUDT4, out T1 @identity1, out T2 @identity2, out T3 @identity3, out T4 @identity4)
            where T1 : class
            where T2 : class
            where T3 : class
            where T4 : class
        {
            bool @bool = false;

            @identity1 = null;
            @identity2 = null;
            @identity3 = null;
            @identity4 = null;
            InterfaceRepoSaveUpdateDelete repoSaveUpdateDelete = new RepoWrapper(new MirrorDBContext());
            var resultRepo = repoSaveUpdateDelete.SaveUpdateDelete <T1, T2, T3, T4>(entity1, enumSUDT1, entity2, enumSUDT2, entity3, enumSUDT3, entity4, enumSUDT4);

            if (resultRepo.IsSuccessConnection & resultRepo.IsSuccessQuery)
            {
                @identity1 = (T1)resultRepo.ReturnValue[0].ReturnValue;
                @identity2 = (T2)resultRepo.ReturnValue[1].ReturnValue;
                @identity3 = (T3)resultRepo.ReturnValue[2].ReturnValue;
                @identity4 = (T4)resultRepo.ReturnValue[3].ReturnValue;
                @bool      = true;
            }
            return(@bool);
        }
Esempio n. 4
0
        public async Task <bool> SaveUpdateDeleteAsync <T1, T2, T3, T4, T5>(T1 entity1, EnumSaveUpdateDelete enumSUDT1, T2 entity2, EnumSaveUpdateDelete enumSUDT2, T3 entity3, EnumSaveUpdateDelete enumSUDT3, T4 entity4, EnumSaveUpdateDelete enumSUDT4, T5 entity5, EnumSaveUpdateDelete enumSUDT5)
            where T1 : class
            where T2 : class
            where T3 : class
            where T4 : class
            where T5 : class
        {
            bool @bool = false;
            InterfaceRepoSaveUpdateDeleteAsync repoSaveUpdateDeleteAsync = new RepoWrapperAsync(new MirrorDBContext());
            var resultRepo = await repoSaveUpdateDeleteAsync.SaveUpdateDeleteAsync <T1, T2, T3, T4, T5>(entity1, enumSUDT1, entity2, enumSUDT2, entity3, enumSUDT3, entity4, enumSUDT4, entity5, enumSUDT5);

            if (resultRepo.IsSuccessConnection & resultRepo.IsSuccessQuery)
            {
                @bool = true;
            }
            return(@bool);
        }
Esempio n. 5
0
        public EFReturnValue SaveUpdateDeleteActiveBoolList <T1, T2, T3, T4, T5>(List <T1> listEntity1, EnumSaveUpdateDelete enumSUDT1, List <T2> listEntity2, EnumSaveUpdateDelete enumSUDT2, List <T3> listEntity3, EnumSaveUpdateDelete enumSUDT3, List <T4> listEntity4, EnumSaveUpdateDelete enumSUDT4, List <T5> listEntity5, EnumSaveUpdateDelete enumSUDT5)
            where T1 : class
            where T2 : class
            where T3 : class
            where T4 : class
            where T5 : class
        {
            int hasil = 0; eFReturn = new EFReturnValue {
                IsSuccessConnection = false, IsSuccessQuery = false, ErrorMessage = ErrorMessage.EntityCannotBeNull, ReturnValue = null
            };

            if (listEntity1 != null & listEntity2 != null & listEntity3 != null & listEntity4 != null & listEntity5 != null)
            {
                using (var context = DBContextBantuan.GetInstance.CreateConnectionContext())
                {
                    using (var contextTrans = context.Database.BeginTransaction())
                    {
                        try
                        {
                            listEntity1 = this.SetEntityPreparation <T1>(listEntity1, enumSUDT1);
                            listEntity2 = this.SetEntityPreparation <T2>(listEntity2, enumSUDT2);
                            listEntity3 = this.SetEntityPreparation <T3>(listEntity3, enumSUDT3);
                            listEntity4 = this.SetEntityPreparation <T4>(listEntity4, enumSUDT4);
                            listEntity5 = this.SetEntityPreparation <T5>(listEntity5, enumSUDT5);

                            if (enumSUDT1 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T1>().AddRange(listEntity1);
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T2>().AddRange(listEntity2);
                            }
                            if (enumSUDT3 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T3>().AddRange(listEntity3);
                            }
                            if (enumSUDT4 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T4>().AddRange(listEntity4);
                            }
                            if (enumSUDT5 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T5>().AddRange(listEntity5);
                            }

                            if (enumSUDT1 == EnumSaveUpdateDelete.Delete)
                            {
                                var propUpdateDate = ColumnPropGet.GetInstance.GetColumnProps <T1>(MiscClass.MiscClass.ArrayUpdateDate);
                                var propActiveBool = ColumnPropGet.GetInstance.GetColumnProps <T1>(MiscClass.MiscClass.ArrayActiveBool);
                                foreach (var item in listEntity1)
                                {
                                    context.Set <T1>().Attach(item); context.Entry(item).State = EntityState.Unchanged;
                                    if (propUpdateDate != null)
                                    {
                                        context.Entry(item).Property(propUpdateDate.Name).IsModified = true;
                                    }
                                    if (propActiveBool != null)
                                    {
                                        context.Entry(item).Property(propActiveBool.Name).IsModified = true;
                                    }
                                }
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Delete)
                            {
                                var propUpdateDate = ColumnPropGet.GetInstance.GetColumnProps <T2>(MiscClass.MiscClass.ArrayUpdateDate);
                                var propActiveBool = ColumnPropGet.GetInstance.GetColumnProps <T2>(MiscClass.MiscClass.ArrayActiveBool);
                                foreach (var item in listEntity2)
                                {
                                    context.Set <T2>().Attach(item); context.Entry(item).State = EntityState.Unchanged;
                                    if (propUpdateDate != null)
                                    {
                                        context.Entry(item).Property(propUpdateDate.Name).IsModified = true;
                                    }
                                    if (propActiveBool != null)
                                    {
                                        context.Entry(item).Property(propActiveBool.Name).IsModified = true;
                                    }
                                }
                            }
                            if (enumSUDT3 == EnumSaveUpdateDelete.Delete)
                            {
                                var propUpdateDate = ColumnPropGet.GetInstance.GetColumnProps <T3>(MiscClass.MiscClass.ArrayUpdateDate);
                                var propActiveBool = ColumnPropGet.GetInstance.GetColumnProps <T3>(MiscClass.MiscClass.ArrayActiveBool);
                                foreach (var item in listEntity3)
                                {
                                    context.Set <T3>().Attach(item); context.Entry(item).State = EntityState.Unchanged;
                                    if (propUpdateDate != null)
                                    {
                                        context.Entry(item).Property(propUpdateDate.Name).IsModified = true;
                                    }
                                    if (propActiveBool != null)
                                    {
                                        context.Entry(item).Property(propActiveBool.Name).IsModified = true;
                                    }
                                }
                            }
                            if (enumSUDT4 == EnumSaveUpdateDelete.Delete)
                            {
                                var propUpdateDate = ColumnPropGet.GetInstance.GetColumnProps <T4>(MiscClass.MiscClass.ArrayUpdateDate);
                                var propActiveBool = ColumnPropGet.GetInstance.GetColumnProps <T4>(MiscClass.MiscClass.ArrayActiveBool);
                                foreach (var item in listEntity4)
                                {
                                    context.Set <T4>().Attach(item); context.Entry(item).State = EntityState.Unchanged;
                                    if (propUpdateDate != null)
                                    {
                                        context.Entry(item).Property(propUpdateDate.Name).IsModified = true;
                                    }
                                    if (propActiveBool != null)
                                    {
                                        context.Entry(item).Property(propActiveBool.Name).IsModified = true;
                                    }
                                }
                            }
                            if (enumSUDT5 == EnumSaveUpdateDelete.Delete)
                            {
                                var propUpdateDate = ColumnPropGet.GetInstance.GetColumnProps <T5>(MiscClass.MiscClass.ArrayUpdateDate);
                                var propActiveBool = ColumnPropGet.GetInstance.GetColumnProps <T5>(MiscClass.MiscClass.ArrayActiveBool);
                                foreach (var item in listEntity5)
                                {
                                    context.Set <T5>().Attach(item); context.Entry(item).State = EntityState.Unchanged;
                                    if (propUpdateDate != null)
                                    {
                                        context.Entry(item).Property(propUpdateDate.Name).IsModified = true;
                                    }
                                    if (propActiveBool != null)
                                    {
                                        context.Entry(item).Property(propActiveBool.Name).IsModified = true;
                                    }
                                }
                            }

                            if (enumSUDT1 == EnumSaveUpdateDelete.Update)
                            {
                                for (int i = 0; i < listEntity1.Count; i++)
                                {
                                    List <PropertyInfo> colNotNullT1 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T1>(listEntity1[i]);
                                    context.Set <T1>().Attach(listEntity1[i]);
                                    context.Entry(listEntity1[i]).State = EntityState.Unchanged;
                                    foreach (PropertyInfo property in colNotNullT1)
                                    {
                                        if (property != null)
                                        {
                                            context.Entry(listEntity1[i]).Property(property.Name).IsModified = true;
                                        }
                                    }
                                }
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Update)
                            {
                                for (int i = 0; i < listEntity2.Count; i++)
                                {
                                    List <PropertyInfo> colNotNullT2 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T2>(listEntity2[i]);
                                    context.Set <T2>().Attach(listEntity2[i]);
                                    context.Entry(listEntity2[i]).State = EntityState.Unchanged;
                                    foreach (PropertyInfo property in colNotNullT2)
                                    {
                                        if (property != null)
                                        {
                                            context.Entry(listEntity2[i]).Property(property.Name).IsModified = true;
                                        }
                                    }
                                }
                            }
                            if (enumSUDT3 == EnumSaveUpdateDelete.Update)
                            {
                                for (int i = 0; i < listEntity3.Count; i++)
                                {
                                    List <PropertyInfo> colNotNullT3 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T3>(listEntity3[i]);
                                    context.Set <T3>().Attach(listEntity3[i]);
                                    context.Entry(listEntity3[i]).State = EntityState.Unchanged;
                                    foreach (PropertyInfo property in colNotNullT3)
                                    {
                                        if (property != null)
                                        {
                                            context.Entry(listEntity3[i]).Property(property.Name).IsModified = true;
                                        }
                                    }
                                }
                            }
                            if (enumSUDT4 == EnumSaveUpdateDelete.Update)
                            {
                                for (int i = 0; i < listEntity4.Count; i++)
                                {
                                    List <PropertyInfo> colNotNullT4 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T4>(listEntity4[i]);
                                    context.Set <T4>().Attach(listEntity4[i]);
                                    context.Entry(listEntity4[i]).State = EntityState.Unchanged;
                                    foreach (PropertyInfo property in colNotNullT4)
                                    {
                                        if (property != null)
                                        {
                                            context.Entry(listEntity4[i]).Property(property.Name).IsModified = true;
                                        }
                                    }
                                }
                            }
                            if (enumSUDT5 == EnumSaveUpdateDelete.Update)
                            {
                                for (int i = 0; i < listEntity5.Count; i++)
                                {
                                    List <PropertyInfo> colNotNullT5 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T5>(listEntity5[i]);
                                    context.Set <T5>().Attach(listEntity5[i]);
                                    context.Entry(listEntity5[i]).State = EntityState.Unchanged;
                                    foreach (PropertyInfo property in colNotNullT5)
                                    {
                                        if (property != null)
                                        {
                                            context.Entry(listEntity5[i]).Property(property.Name).IsModified = true;
                                        }
                                    }
                                }
                            }

                            hasil = context.SaveChanges();
                            contextTrans.Commit();
                            eFReturn = eFReturn.SetEFReturnValue(eFReturn, true, hasil, listEntity1, listEntity2, listEntity3, listEntity4, listEntity5);
                        }
                        catch (Exception ex) { eFReturn = eFReturn.SetEFReturnValue(eFReturn, false, 0, ex.Message); contextTrans.Rollback(); }
                    }
                }
            }
            return(eFReturn);
        }
        public async Task <EFReturnValue> SaveUpdateDeleteActiveBoolListAsync <T1>(List <T1> listEntity1, EnumSaveUpdateDelete enumSUDT1) where T1 : class
        {
            int hasil = 0; eFReturn = new EFReturnValue {
                IsSuccessConnection = false, IsSuccessQuery = false, ErrorMessage = ErrorMessage.EntityCannotBeNull, ReturnValue = null
            };

            if (listEntity1 != null)
            {
                using (var context = DBContextBantuan.GetInstance.CreateConnectionContext())
                {
                    using (var contextTrans = context.Database.BeginTransaction())
                    {
                        try
                        {
                            listEntity1 = this.SetEntityPreparation <T1>(listEntity1, enumSUDT1);

                            if (enumSUDT1 == EnumSaveUpdateDelete.Save)
                            {
                                await context.Set <T1>().AddRangeAsync(listEntity1);
                            }
                            if (enumSUDT1 == EnumSaveUpdateDelete.Delete)
                            {
                                var propUpdateDate = ColumnPropGet.GetInstance.GetColumnProps <T1>(MiscClass.MiscClass.ArrayUpdateDate);
                                var propActiveBool = ColumnPropGet.GetInstance.GetColumnProps <T1>(MiscClass.MiscClass.ArrayActiveBool);
                                foreach (var item in listEntity1)
                                {
                                    context.Set <T1>().Attach(item); context.Entry(item).State = EntityState.Unchanged;
                                    if (propUpdateDate != null)
                                    {
                                        context.Entry(item).Property(propUpdateDate.Name).IsModified = true;
                                    }
                                    if (propActiveBool != null)
                                    {
                                        context.Entry(item).Property(propActiveBool.Name).IsModified = true;
                                    }
                                }
                            }


                            if (enumSUDT1 == EnumSaveUpdateDelete.Update)
                            {
                                for (int i = 0; i < listEntity1.Count; i++)
                                {
                                    List <PropertyInfo> colNotNullT1 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T1>(listEntity1[i]);
                                    context.Set <T1>().Attach(listEntity1[i]);
                                    context.Entry(listEntity1[i]).State = EntityState.Unchanged;
                                    foreach (PropertyInfo property in colNotNullT1)
                                    {
                                        if (property != null)
                                        {
                                            context.Entry(listEntity1[i]).Property(property.Name).IsModified = true;
                                        }
                                    }
                                }
                            }

                            hasil = await context.SaveChangesAsync().ConfigureAwait(false);

                            contextTrans.Commit();
                            eFReturn = eFReturn.SetEFReturnValue(eFReturn, true, hasil, listEntity1);
                        }
                        catch (Exception ex) { eFReturn = eFReturn.SetEFReturnValue(eFReturn, false, 0, ex.Message); contextTrans.Rollback(); }
                    }
                }
            }
            return(eFReturn);
        }
Esempio n. 7
0
        public async Task <EFReturnValue> SaveUpdateDeleteListAsync <T1, T2, T3, T4>(List <T1> listEntity1, EnumSaveUpdateDelete enumSUDT1, List <T2> listEntity2, EnumSaveUpdateDelete enumSUDT2, List <T3> listEntity3, EnumSaveUpdateDelete enumSUDT3, List <T4> listEntity4, EnumSaveUpdateDelete enumSUDT4)
            where T1 : class
            where T2 : class
            where T3 : class
            where T4 : class
        {
            int hasil = 0; eFReturn = new EFReturnValue {
                IsSuccessConnection = false, IsSuccessQuery = false, ErrorMessage = ErrorMessage.EntityCannotBeNull, ReturnValue = null
            };

            if (listEntity1 != null & listEntity2 != null & listEntity3 != null & listEntity4 != null)
            {
                using (var context = DBContextBantuan.GetInstance.CreateConnectionContext())
                {
                    using (var contextTrans = context.Database.BeginTransaction())
                    {
                        try
                        {
                            listEntity1 = this.SetEntityPreparation <T1>(listEntity1, enumSUDT1);
                            listEntity2 = this.SetEntityPreparation <T2>(listEntity2, enumSUDT2);
                            listEntity3 = this.SetEntityPreparation <T3>(listEntity3, enumSUDT3);
                            listEntity4 = this.SetEntityPreparation <T4>(listEntity4, enumSUDT4);

                            if (enumSUDT1 == EnumSaveUpdateDelete.Save)
                            {
                                await context.Set <T1>().AddRangeAsync(listEntity1);
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Save)
                            {
                                await context.Set <T2>().AddRangeAsync(listEntity2);
                            }
                            if (enumSUDT3 == EnumSaveUpdateDelete.Save)
                            {
                                await context.Set <T3>().AddRangeAsync(listEntity3);
                            }
                            if (enumSUDT4 == EnumSaveUpdateDelete.Save)
                            {
                                await context.Set <T4>().AddRangeAsync(listEntity4);
                            }

                            if (enumSUDT1 == EnumSaveUpdateDelete.Delete)
                            {
                                context.Set <T1>().AttachRange(listEntity1); context.Set <T1>().RemoveRange(listEntity1);
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Delete)
                            {
                                context.Set <T2>().AttachRange(listEntity2); context.Set <T2>().RemoveRange(listEntity2);
                            }
                            if (enumSUDT3 == EnumSaveUpdateDelete.Delete)
                            {
                                context.Set <T3>().AttachRange(listEntity3); context.Set <T3>().RemoveRange(listEntity3);
                            }
                            if (enumSUDT4 == EnumSaveUpdateDelete.Delete)
                            {
                                context.Set <T4>().AttachRange(listEntity4); context.Set <T4>().RemoveRange(listEntity4);
                            }

                            if (enumSUDT1 == EnumSaveUpdateDelete.Update)
                            {
                                for (int i = 0; i < listEntity1.Count; i++)
                                {
                                    List <PropertyInfo> colNotNullT1 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T1>(listEntity1[i]);
                                    context.Set <T1>().Attach(listEntity1[i]);
                                    context.Entry(listEntity1[i]).State = EntityState.Unchanged;
                                    foreach (PropertyInfo property in colNotNullT1)
                                    {
                                        if (property != null)
                                        {
                                            context.Entry(listEntity1[i]).Property(property.Name).IsModified = true;
                                        }
                                    }
                                }
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Update)
                            {
                                for (int i = 0; i < listEntity2.Count; i++)
                                {
                                    List <PropertyInfo> colNotNullT2 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T2>(listEntity2[i]);
                                    context.Set <T2>().Attach(listEntity2[i]);
                                    context.Entry(listEntity2[i]).State = EntityState.Unchanged;
                                    foreach (PropertyInfo property in colNotNullT2)
                                    {
                                        if (property != null)
                                        {
                                            context.Entry(listEntity2[i]).Property(property.Name).IsModified = true;
                                        }
                                    }
                                }
                            }
                            if (enumSUDT3 == EnumSaveUpdateDelete.Update)
                            {
                                for (int i = 0; i < listEntity3.Count; i++)
                                {
                                    List <PropertyInfo> colNotNullT3 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T3>(listEntity3[i]);
                                    context.Set <T3>().Attach(listEntity3[i]);
                                    context.Entry(listEntity3[i]).State = EntityState.Unchanged;
                                    foreach (PropertyInfo property in colNotNullT3)
                                    {
                                        if (property != null)
                                        {
                                            context.Entry(listEntity3[i]).Property(property.Name).IsModified = true;
                                        }
                                    }
                                }
                            }
                            if (enumSUDT4 == EnumSaveUpdateDelete.Update)
                            {
                                for (int i = 0; i < listEntity4.Count; i++)
                                {
                                    List <PropertyInfo> colNotNullT4 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T4>(listEntity4[i]);
                                    context.Set <T4>().Attach(listEntity4[i]);
                                    context.Entry(listEntity4[i]).State = EntityState.Unchanged;
                                    foreach (PropertyInfo property in colNotNullT4)
                                    {
                                        if (property != null)
                                        {
                                            context.Entry(listEntity4[i]).Property(property.Name).IsModified = true;
                                        }
                                    }
                                }
                            }

                            hasil = await context.SaveChangesAsync().ConfigureAwait(false);

                            contextTrans.Commit();
                            eFReturn = eFReturn.SetEFReturnValue(eFReturn, true, hasil, listEntity1, listEntity2, listEntity3, listEntity4);
                        }
                        catch (Exception ex) { eFReturn = eFReturn.SetEFReturnValue(eFReturn, false, 0, ex.Message); contextTrans.Rollback(); }
                    }
                }
            }
            return(eFReturn);
        }
Esempio n. 8
0
        public EFReturnValue SaveUpdateDeleteActiveBool <T1, T2>(T1 entity1, EnumSaveUpdateDelete enumSUDT1, T2 entity2, EnumSaveUpdateDelete enumSUDT2)
            where T1 : class
            where T2 : class
        {
            int hasil = 0; eFReturn = new EFReturnValue {
                IsSuccessConnection = false, IsSuccessQuery = false, ErrorMessage = ErrorMessage.EntityCannotBeNull, ReturnValue = null
            };

            if (entity1 != null & entity2 != null)
            {
                using (var context = DBContextBantuan.GetInstance.CreateConnectionContext())
                {
                    using (var contextTrans = context.Database.BeginTransaction())
                    {
                        try
                        {
                            entity1 = this.SetEntityPreparation <T1>(entity1, enumSUDT1);
                            entity2 = this.SetEntityPreparation <T2>(entity2, enumSUDT2);
                            List <PropertyInfo> colNotNullT1 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T1>(entity1);
                            List <PropertyInfo> colNotNullT2 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T2>(entity2);

                            if (enumSUDT1 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T1>().Add(entity1);
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T2>().Add(entity2);
                            }

                            if (enumSUDT1 == EnumSaveUpdateDelete.Delete)
                            {
                                var propUpdateDate = ColumnPropGet.GetInstance.GetColumnProps <T1>(MiscClass.MiscClass.ArrayUpdateDate);
                                var propActiveBool = ColumnPropGet.GetInstance.GetColumnProps <T1>(MiscClass.MiscClass.ArrayActiveBool);
                                context.Set <T1>().Attach(entity1);
                                context.Entry(entity1).State = EntityState.Unchanged;
                                if (propUpdateDate != null)
                                {
                                    context.Entry(entity1).Property(propUpdateDate.Name).IsModified = true;
                                }
                                if (propActiveBool != null)
                                {
                                    context.Entry(entity1).Property(propActiveBool.Name).IsModified = true;
                                }
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Delete)
                            {
                                var propUpdateDate = ColumnPropGet.GetInstance.GetColumnProps <T1>(MiscClass.MiscClass.ArrayUpdateDate);
                                var propActiveBool = ColumnPropGet.GetInstance.GetColumnProps <T1>(MiscClass.MiscClass.ArrayActiveBool);
                                context.Set <T2>().Attach(entity2);
                                context.Entry(entity2).State = EntityState.Unchanged;
                                if (propUpdateDate != null)
                                {
                                    context.Entry(entity2).Property(propUpdateDate.Name).IsModified = true;
                                }
                                if (propActiveBool != null)
                                {
                                    context.Entry(entity2).Property(propActiveBool.Name).IsModified = true;
                                }
                            }

                            if (enumSUDT1 == EnumSaveUpdateDelete.Update)
                            {
                                context.Set <T1>().Attach(entity1);
                                context.Entry(entity1).State = EntityState.Unchanged;
                                foreach (PropertyInfo property in colNotNullT1)
                                {
                                    if (property != null)
                                    {
                                        context.Entry(entity1).Property(property.Name).IsModified = true;
                                    }
                                }
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Update)
                            {
                                context.Set <T2>().Attach(entity2);
                                context.Entry(entity2).State = EntityState.Unchanged;
                                foreach (PropertyInfo property in colNotNullT2)
                                {
                                    if (property != null)
                                    {
                                        context.Entry(entity2).Property(property.Name).IsModified = true;
                                    }
                                }
                            }

                            hasil = context.SaveChanges();
                            contextTrans.Commit();
                            eFReturn = eFReturn.SetEFReturnValue(eFReturn, true, hasil, entity1);
                        }
                        catch (Exception ex) { eFReturn = eFReturn.SetEFReturnValue(eFReturn, false, 0, ex.Message); contextTrans.Rollback(); }
                    }
                }
            }
            return(eFReturn);
        }
        public EFReturnValue SaveUpdateDelete <T1, T2, T3, T4, T5>(T1 entity1, EnumSaveUpdateDelete enumSUDT1, T2 entity2, EnumSaveUpdateDelete enumSUDT2, T3 entity3, EnumSaveUpdateDelete enumSUDT3, T4 entity4, EnumSaveUpdateDelete enumSUDT4, T5 entity5, EnumSaveUpdateDelete enumSUDT5)
            where T1 : class
            where T2 : class
            where T3 : class
            where T4 : class
            where T5 : class
        {
            int hasil = 0; eFReturn = new EFReturnValue {
                IsSuccessConnection = false, IsSuccessQuery = false, ErrorMessage = ErrorMessage.EntityCannotBeNull, ReturnValue = null
            };

            if (entity1 != null & entity2 != null & entity3 != null & entity4 != null & entity5 != null)
            {
                using (var context = DBContextBantuan.GetInstance.CreateConnectionContext())
                {
                    using (var contextTrans = context.Database.BeginTransaction())
                    {
                        try
                        {
                            entity1 = this.SetEntityPreparation <T1>(entity1, enumSUDT1);
                            entity2 = this.SetEntityPreparation <T2>(entity2, enumSUDT2);
                            entity3 = this.SetEntityPreparation <T3>(entity3, enumSUDT3);
                            entity4 = this.SetEntityPreparation <T4>(entity4, enumSUDT4);
                            entity5 = this.SetEntityPreparation <T5>(entity5, enumSUDT5);

                            List <PropertyInfo> colNotNullT1 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T1>(entity1);
                            List <PropertyInfo> colNotNullT2 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T2>(entity2);
                            List <PropertyInfo> colNotNullT3 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T3>(entity3);
                            List <PropertyInfo> colNotNullT4 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T4>(entity4);
                            List <PropertyInfo> colNotNullT5 = ColumnPropGet.GetInstance.GetPropertyColNotNull <T5>(entity5);


                            if (enumSUDT1 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T1>().Add(entity1);
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T2>().Add(entity2);
                            }
                            if (enumSUDT3 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T3>().Add(entity3);
                            }
                            if (enumSUDT4 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T4>().Add(entity4);
                            }
                            if (enumSUDT5 == EnumSaveUpdateDelete.Save)
                            {
                                context.Set <T5>().Add(entity5);
                            }

                            if (enumSUDT1 == EnumSaveUpdateDelete.Delete)
                            {
                                context.Set <T1>().Attach(entity1); context.Set <T1>().Remove(entity1);
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Delete)
                            {
                                context.Set <T2>().Attach(entity2); context.Set <T2>().Remove(entity2);
                            }
                            if (enumSUDT3 == EnumSaveUpdateDelete.Delete)
                            {
                                context.Set <T3>().Attach(entity3); context.Set <T3>().Remove(entity3);
                            }
                            if (enumSUDT4 == EnumSaveUpdateDelete.Delete)
                            {
                                context.Set <T4>().Attach(entity4); context.Set <T4>().Remove(entity4);
                            }
                            if (enumSUDT5 == EnumSaveUpdateDelete.Delete)
                            {
                                context.Set <T5>().Attach(entity5); context.Set <T5>().Remove(entity5);
                            }

                            if (enumSUDT1 == EnumSaveUpdateDelete.Update)
                            {
                                context.Set <T1>().Attach(entity1);
                                context.Entry(entity1).State = EntityState.Unchanged;
                                foreach (PropertyInfo property in colNotNullT1)
                                {
                                    if (property != null)
                                    {
                                        context.Entry(entity1).Property(property.Name).IsModified = true;
                                    }
                                }
                            }
                            if (enumSUDT2 == EnumSaveUpdateDelete.Update)
                            {
                                context.Set <T2>().Attach(entity2);
                                context.Entry(entity2).State = EntityState.Unchanged;
                                foreach (PropertyInfo property in colNotNullT2)
                                {
                                    if (property != null)
                                    {
                                        context.Entry(entity2).Property(property.Name).IsModified = true;
                                    }
                                }
                            }
                            if (enumSUDT3 == EnumSaveUpdateDelete.Update)
                            {
                                context.Set <T3>().Attach(entity3);
                                context.Entry(entity3).State = EntityState.Unchanged;
                                foreach (PropertyInfo property in colNotNullT3)
                                {
                                    if (property != null)
                                    {
                                        context.Entry(entity3).Property(property.Name).IsModified = true;
                                    }
                                }
                            }
                            if (enumSUDT4 == EnumSaveUpdateDelete.Update)
                            {
                                context.Set <T4>().Attach(entity4);
                                context.Entry(entity4).State = EntityState.Unchanged;
                                foreach (PropertyInfo property in colNotNullT4)
                                {
                                    if (property != null)
                                    {
                                        context.Entry(entity4).Property(property.Name).IsModified = true;
                                    }
                                }
                            }
                            if (enumSUDT5 == EnumSaveUpdateDelete.Update)
                            {
                                context.Set <T5>().Attach(entity5);
                                context.Entry(entity5).State = EntityState.Unchanged;
                                foreach (PropertyInfo property in colNotNullT5)
                                {
                                    if (property != null)
                                    {
                                        context.Entry(entity5).Property(property.Name).IsModified = true;
                                    }
                                }
                            }

                            hasil = context.SaveChanges();
                            contextTrans.Commit();
                            eFReturn = eFReturn.SetEFReturnValue(eFReturn, true, hasil, entity1, entity2, entity3, entity4, entity5);
                        }
                        catch (Exception ex) { eFReturn = eFReturn.SetEFReturnValue(eFReturn, false, 0, ex.Message); contextTrans.Rollback(); }
                    }
                }
            }
            return(eFReturn);
        }