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(); } }
//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())); }
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(); } }