コード例 #1
0
 static void SaveChangesInPostgres <T>(IList <T> list, DbContextOptionsBuilder <RPCSContext> dbContextOptionsBuilderPostgres) where T : class
 {
     using (var rpcsContextPostgres = new RPCSContext(dbContextOptionsBuilderPostgres.Options))
     {
         rpcsContextPostgres.Set <T>().Clear();
         rpcsContextPostgres.SaveChanges();
         foreach (var item in list)
         {
             rpcsContextPostgres.Add(item);
         }
         rpcsContextPostgres.SaveChanges();
     }
 }
コード例 #2
0
ファイル: MigrateController.cs プロジェクト: Alekseyya/SKEP
        //public ActionResult GetDateFromMysql()
        //{


        //    var result = "";
        //    var listIds = _dbMysql.RPCSUsers.Where(x => x.UserLogin.ToLower() != "ad\\aleksey.yarchuk").Select(x=>x.UserLogin).ToList();
        //    //var listIds = _tsAutoHoursRecordService.GetAll().Select(x => x.ID);
        //    foreach (var id in listIds)
        //    {
        //        result += " - " + id + "\n";
        //    }

        //    result += "Count   " + listIds.Count().ToString();
        //    return Content(result);
        //}


        public ActionResult Migrate()
        {
            //    //С таблицей Employee какие-то проблемы - пользоваться самописным методом
            //    // Project делать через контексты
            //    //С таблицей CostItem какие-то проблемы - пользоваться самописным методом
            //    //С таблицей CostSubItem какие-то проблемы - пользоваться самописным методом
            //    //С таблицей budgetlimit какие-то проблемы - пользоваться самописным методом
            //    //С таблицей vacationrecord какие-то проблемы - пользоваться самописным методом
            //    //С таблицей tsautohoursrecord какие-то проблемы - пользоваться самописным методом
            //    //С таблицей tshoursrecord какие-то проблемы - пользоваться самописным методом



            //    //foreach (var entity in tshoursrecord)
            //    //{
            //    //    _db.TSHoursRecords.Add(entity);
            //    //    _db.SaveChanges();
            //    //}

            //    //return Content("Миграция для бд " + tshoursrecord.GetType().ToString());

            dynamic entities;

            try
            {
                entities = _dbMysql.TSHoursRecords.ToList();
            }
            catch (Exception e)
            {
                return(Content("Код ошибки" + e));
            }

            foreach (var entity in entities)
            {
                _db.TSHoursRecords.Add(entity);
                _db.SaveChanges();
            }

            return(Content("Миграция для бд " + entities.GetType().ToString()));
        }
コード例 #3
0
        static void SaveChangesInPostgres(IList <Employee> employees, IList <Department> departments, DbContextOptionsBuilder <RPCSContext> dbContextOptionsBuilderPostgres)
        {
            var saveListEmployee    = new List <Employee>();
            var saveListDepartments = new List <Department>();

            using (var rpcsContextPostgres = new RPCSContext(dbContextOptionsBuilderPostgres.Options))
            {
                rpcsContextPostgres.Set <Employee>().Clear();
                rpcsContextPostgres.Set <Department>().Clear();
                rpcsContextPostgres.SaveChanges();

                foreach (var item in employees)
                {
                    saveListEmployee.Add(new Employee()
                    {
                        ID = item.ID, DepartmentID = item.DepartmentID
                    });
                    item.DepartmentID = null;
                    rpcsContextPostgres.Add(item);
                }
                rpcsContextPostgres.SaveChanges();

                foreach (var item in departments)
                {
                    saveListDepartments.Add(new Department()
                    {
                        ID = item.ID,
                        DepartmentManagerID          = item.DepartmentManagerID,
                        DepartmentManagerAssistantID = item.DepartmentManagerAssistantID,
                        DepartmentPAID = item.DepartmentPAID
                    });
                    item.DepartmentManagerID          = null;
                    item.DepartmentManagerAssistantID = null;
                    item.DepartmentPAID = null;
                    rpcsContextPostgres.Add(item);
                }
                rpcsContextPostgres.SaveChanges();


                //https://stackoverflow.com/questions/40073149/entity-framework-circular-dependency-for-last-entity
                //using (var scope = new TransactionScope())
                //{
                //    foreach (var item in firstList)
                //    {
                //        rpcsContextPostgres.Add(item);
                //    }
                //    rpcsContextPostgres.SaveChanges();
                //    scope.Complete();
                //}

                //using (var scope = new TransactionScope())
                //{
                //    foreach (var item in secondList)
                //    {
                //        rpcsContextPostgres.Add(item);
                //    }
                //    rpcsContextPostgres.SaveChanges();
                //    scope.Complete();
                //}
            }

            using (var rpcsContextPostgres = new RPCSContext(dbContextOptionsBuilderPostgres.Options))
            {
                //обновление пустых полей
                foreach (var employee in saveListEmployee)
                {
                    rpcsContextPostgres.Employees.Attach(employee);
                    rpcsContextPostgres.Entry(employee).Property(x => x.DepartmentID).IsModified = true;
                }
                rpcsContextPostgres.SaveChanges();


                foreach (var department in saveListDepartments)
                {
                    rpcsContextPostgres.Departments.Attach(department);
                    rpcsContextPostgres.Entry(department).Property(x => x.DepartmentManagerID).IsModified          = true;
                    rpcsContextPostgres.Entry(department).Property(x => x.DepartmentManagerAssistantID).IsModified = true;
                    rpcsContextPostgres.Entry(department).Property(x => x.DepartmentPAID).IsModified = true;
                }
                rpcsContextPostgres.SaveChanges();
            }
        }