示例#1
0
        public ActionResult Create([Bind(Include = "Id,Name,Category,CreateDate")] Product product)
        {
            if (ModelState.IsValid)
            {
                db.Products.Add(product);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.Category = new SelectList(db.Categories, "Id", "Name", product.Category);
            return(View(product));
        }
示例#2
0
        //【3】其实,我们应该自己能够创建和控制事务的执行:就是自定义事务。
        //自定义事务可以在某些时候改变事务的隔离级别
        //默认:Read Commit (提交读) 我们可以改成未提交读(未提交读,可能产生脏数据)
        //脏数据:当一个事务在访问数据的时候,并且对这个数据做了修改,但是这个修改没有正式提交,
        //这时候,另外一个事务也在访问这个数据,然后使用了这个数据。这时候脏数据就产生。

        //select * from students with(nolock) ...这种情况是有脏数据的可能。
        //set transaction isolation level read committed //如果数据中有Share锁 ,同时记录中有排他性,会编程IS锁
        //结果:如果一个记录上有S锁,那么执行insert的时候是无法完成的,因为insert会加上排他锁。
        //如果加上nolock,这时候,我们执行的insert、update、等不会被影响。这种做法可以在高并发的情况下考虑。

        //实现自定义的事务1
        private static void TestCustomTransaction1()
        {
            using (EFDBEntities db = new EFDBEntities())
            {
                using (var cusTransaction = db.Database.BeginTransaction
                                                (System.Data.IsolationLevel.ReadUncommitted))
                {
                    try
                    {
                        db.Database.Log = Console.WriteLine;
                        //我们可以在这个地方添加需要的增删改操作...

                        db.StudentClass.Add(new StudentClass {
                            ClassId = 35, ClassName = ".NET高级学习班5"
                        });
                        db.StudentClass.Add(new StudentClass {
                            ClassId = 36, ClassName = ".NET高级学习班6"
                        });

                        db.SaveChanges();

                        cusTransaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        cusTransaction.Rollback();
                        throw ex;
                    }
                }
            }
            Console.Read();
        }
示例#3
0
        public int Save(ItemType itemType)
        {
            ItemType temp = context.ItemTypes.Add(itemType);

            context.SaveChanges();
            return(temp.Id);
        }
示例#4
0
        //实现自定义的事务2
        private static void TestCustomTransaction2()
        {
            using (EFDBEntities db = new EFDBEntities())
            {
                using (var cusTransaction = new TransactionScope())
                {
                    try
                    {
                        db.Database.Log = Console.WriteLine;
                        //我们可以在这个地方添加需要的增删改操作...

                        db.StudentClass.Add(new StudentClass {
                            ClassId = 45, ClassName = ".NET高级学习班11"
                        });
                        db.StudentClass.Add(new StudentClass {
                            ClassId = 46, ClassName = ".NET高级学习班10"
                        });

                        db.SaveChanges();

                        cusTransaction.Complete();
                    }
                    catch (Exception ex)
                    {
                        Transaction.Current.Rollback();
                        throw ex;
                    }
                }
            }
            Console.Read();
        }
示例#5
0
        //【2】在查询中是没有事务的
        private static void TestTransaction2()
        {
            using (EFDBEntities db = new EFDBEntities())
            {
                //我们可以通过log接口来随时查看日志信息,它在DataBase里面
                db.Database.Log = Console.WriteLine;

                db.StudentClass.FirstOrDefault();

                db.SaveChanges();
                Console.Read();
            }
        }
示例#6
0
        //【1】在增删改中默认开启事务
        private static void TestTransaction1()
        {
            using (EFDBEntities db = new EFDBEntities())
            {
                //我们可以通过log接口来随时查看日志信息,它在DataBase里面
                db.Database.Log = Console.WriteLine;

                db.StudentClass.Add(new StudentClass {
                    ClassId = 30, ClassName = ".NET高级学习班1"
                });
                db.StudentClass.Add(new StudentClass {
                    ClassId = 31, ClassName = ".NET高级学习班2"
                });

                db.SaveChanges();
                Console.Read();
            }
        }
示例#7
0
 public void Complete()
 {
     _context.SaveChanges();
 }
示例#8
0
        // public IRepository<OS_Schedule> ScheduleRepository => _scheduleRepository ?? (_scheduleRepository = new Repository<OS_Schedule>(_dbContext));

        public void SaveChanges()
        {
            CheckIsDisposed();
            _dbContext.SaveChanges();
        }