コード例 #1
0
        public IActionResult UpdateAll(Employee[] employees)
        {
            context.Database.BeginTransaction(level);
            context.UpdateRange(employees);

            Employee temp = new Employee {
                SSN        = "00-00-0000",
                FirstName  = "Temporary",
                FamilyName = "Row",
                Salary     = 0
            };

            context.Add(temp);
            context.SaveChanges();
            System.Threading.Thread.Sleep(5000);
            context.Remove(temp);
            context.SaveChanges();
            if (context.Employees.Sum(e => e.Salary) < 1_000_000)
            {
                context.Database.CommitTransaction();
            }
            else
            {
                context.Database.RollbackTransaction();
                logger.LogError("Salary total exceeds limit");
            }
            return(RedirectToAction(nameof(Index)));
        }
コード例 #2
0
ファイル: MultiController.cs プロジェクト: iiimba/EFCoreApp
        public async Task <IActionResult> InsertRangeAsync(Employee employee)
        {
            context.Add(employee);
            await context.SaveChangesAsync();

            return(Ok());
        }
コード例 #3
0
        public IActionResult UpdateAll(Employee[] employees)
        {
            context.Database.BeginTransaction(level);
            context.UpdateRange(employees);
            Employee temp = new Employee {
                SSN = "00-00-0000", FirstName = "Temporary", FamilyName = "Row", Salary = 0
            };

            context.Add(temp);
            context.SaveChanges();
            System.Threading.Thread.Sleep(5000);
            context.Remove(temp);
            context.SaveChanges();
            if (context.Employees.Sum(e => e.Salary) < 1_000_000)
            {
                context.Database.CommitTransaction();
            }
            else
            {
                context.Database.RollbackTransaction();
                throw new Exception("Salary total exceeds limit");
            }
            //try
            //{
            //    context.UpdateRange(employees);
            //    context.SaveChanges();
            //    context.Database.CommitTransaction();
            //}
            //catch (Exception)
            //{
            //    context.Database.RollbackTransaction();
            //}
            //foreach (Employee e in employees)
            //{
            //    try
            //    {
            //        context.Update(e);
            //        context.SaveChanges();
            //    }
            //    catch (Exception)
            //    {
            //        context.Entry(e).State = EntityState.Detached;
            //    }
            //}
            return(RedirectToAction(nameof(Index)));
        }
コード例 #4
0
 public IActionResult Update(Employee employee)
 {
     if (_context.Employees.Count(e => e.SSN == employee.SSN &&
                                  e.FirstName == employee.FirstName &&
                                  e.FamilyName == employee.FamilyName) == 0)
     {
         _context.Add(employee);
     }
     else
     {
         Employee e = new Employee
         {
             SSN        = employee.SSN,
             FirstName  = employee.FirstName,
             FamilyName = employee.FamilyName,
             RowVersion = employee.RowVersion
         };
         _context.Employees.Attach(e);
         e.Salary      = employee.Salary;
         e.LastUpdated = DateTime.Now;
     }
     _context.SaveChanges();
     return(RedirectToAction(nameof(Index)));
 }
コード例 #5
0
        public IActionResult UpdateAll(Employee[] employees)
        {
            //context.UpdateRange(employees);
            //context.SaveChanges();

            //her bir güncelleme için ayrı transaction çalıştırmak için:
            //foreach (Employee e in employees)
            //{
            //    try
            //    {
            //        context.Update(e);
            //        context.SaveChanges();
            //    }
            //    catch (Exception)
            //    {
            //        context.Entry(e).State = EntityState.Detached;
            //    }
            //}

            //context.Database.BeginTransaction(); //Otomatik transaction kapalı olduğu durumlarda grup güncellemesi için transaction ef ile açılabilir.
            //try
            //{
            //    context.UpdateRange(employees);
            //    context.SaveChanges(); // Burada henüz db de değişiklik yoktur. transaction commit edildikten sonra db değişecektir.
            //    if (context.Employees.Sum(e => e.Salary) < 1_000_000)
            //    {
            //        context.Database.CommitTransaction();
            //    }
            //    else
            //    {
            //        context.Database.RollbackTransaction();
            //        throw new Exception("Salary total exceeds limit");
            //    }
            //    context.Database.CommitTransaction();
            //}
            //catch (Exception)
            //{
            //    context.Database.RollbackTransaction();
            //}


            //context.Database.BeginTransaction();
            //context.UpdateRange(employees);
            //context.SaveChanges();
            //if (context.Employees.Sum(e => e.Salary) < 1_000_000)
            //{
            //    context.Database.CommitTransaction();
            //}
            //else
            //{
            //    context.Database.RollbackTransaction();
            //    throw new Exception("Salary total exceeds limit");
            //}


            context.Database.BeginTransaction(level);
            context.UpdateRange(employees);
            Employee temp = new Employee
            {
                SSN        = "00-00-0000",
                FirstName  = "Temporary",
                FamilyName = "Row",
                Salary     = 0
            };

            context.Add(temp);
            context.SaveChanges();
            System.Threading.Thread.Sleep(5000);
            context.Remove(temp);
            context.SaveChanges();
            if (context.Employees.Sum(e => e.Salary) < 1_000_000)
            {
                context.Database.CommitTransaction();
            }
            else
            {
                context.Database.RollbackTransaction();
                logger.LogError("Salary total exceeds limit");
            }
            return(RedirectToAction(nameof(Index)));
        }
コード例 #6
0
        public IActionResult Update(Employee employee, decimal originalSalary)
        {
            //Employee existing = context.Employees
            //    .AsTracking()
            //    .First(e => e.SSN == employee.SSN && e.FirstName == employee.FirstName
            //            && e.FamilyName == employee.FamilyName);
            //if (existing == null)
            //{
            //    context.Add(employee);
            //}
            //else
            //{
            //    existing.Salary = employee.Salary;
            //}

            //context.SaveChanges();
            //return RedirectToAction(nameof(Index));

            //if (context.Employees.Count(e => e.SSN == employee.SSN
            //        && e.FirstName == employee.FirstName
            //        && e.FamilyName == employee.FamilyName) == 0)
            //{
            //    context.Add(employee);
            //}
            //else
            //{
            //    context.Update(employee);
            //}
            //Employee existing = context.Employees
            //    .Find(employee.SSN, employee.FirstName, employee.FamilyName);

            //if(existing == null)
            //{
            //    //context.Entry(employee).Property("LastUpdated")
            //    //    .CurrentValue = System.DateTime.Now;
            //    context.Add(employee);
            //}
            //else
            //{
            //    existing.Salary = salary;
            //    context.Entry(existing).Property("LastUpdated")
            //        .CurrentValue = System.DateTime.Now;
            //}
            if (context.Employees.Count(e => e.SSN == employee.SSN &&
                                        e.FirstName == employee.FirstName &&
                                        e.FamilyName == employee.FamilyName) == 0)
            {
                context.Add(employee);
            }
            else
            {
                Employee e = new Employee
                {
                    SSN        = employee.SSN,
                    FirstName  = employee.FirstName,
                    FamilyName = employee.FamilyName,
                    Salary     = originalSalary,
                    RowVersion = employee.RowVersion
                };
                context.Employees.Attach(e);
                e.Salary      = employee.Salary;
                e.LastUpdated = DateTime.Now;
            }

            context.SaveChanges();
            return(RedirectToAction(nameof(Index)));
        }