Beispiel #1
0
        //并发控制的试验:
        private static void UpdateTrip2()
        {
            var firstContext = new CodeFirst.DataAccess.BreakAwayContext();
            var trip1 = firstContext.Trips.FirstOrDefault();  //第一个用户取出第一条记录
            trip1.CostUSD = 750;  //修改但是还没来得及保存

            using (var secondContext = new CodeFirst.DataAccess.BreakAwayContext())
            {
                var trip2 = secondContext.Trips.FirstOrDefault();  //第二个用户进来同样取出第一条记录
                trip2.CostUSD = 900;
                secondContext.SaveChanges();  //修改并保存(保存的操作不仅修改了CostUSD为900,同时修改了RowVersion)
            }
            try
            {
                firstContext.SaveChanges();  //此时第一个用户想保存,但是RowVersion已经改变了
                Console.WriteLine("保存成功!");
            }
            catch (DbUpdateConcurrencyException ex)
            {
                Console.WriteLine(ex.Entries.First().Entity.GetType().Name + " 保存失败");
            }
            finally
            {
                firstContext.Dispose();
            }
        }