Beispiel #1
0
        public static void 消除EF追踪()
        {
            using (var db = new DonatorsContext())
            {
                Console.WriteLine("默认情况下,实体的状态");


                var provinceNormal = db.Provinces.Include(p => p.Donators);
                foreach (var province in provinceNormal)
                {
                    FluentConsole.Green.Line("省份追踪状态:{0}", db.Entry(province).State);
                    foreach (var donator in province.Donators)
                    {
                        Console.WriteLine("打赏者的追踪状态:{0}", db.Entry(donator).State);
                    }
                }



                Console.WriteLine("使用AsNoTracking()方法后,实体的状态");
                var provinceNoTracking = db.Provinces.Include(p => p.Donators).AsNoTracking();
                //使用AsNoTracking()方法设置不再追踪实体
                foreach (var province in provinceNoTracking)
                {
                    FluentConsole.Green.Line("省份追踪状态:{0}", db.Entry(province).State);
                    foreach (var donator in province.Donators)
                    {
                        Console.WriteLine("打赏者的追踪状态:{0}", db.Entry(donator).State);
                    }
                }
            }

            Console.WriteLine("EF中实体的状态比较。");
        }
Beispiel #2
0
        //设置实体状态删除
        public static void 设置实体状态删除()
        {
            //通过设置实体状态删除
            var toDeleteProvince = new Province {
                Id = 1
            };

            toDeleteProvince.Donators.Add(new Donator
            {
                Id = 2
            });
            toDeleteProvince.Donators.Add(new Donator
            {
                Id = 3
            });
            toDeleteProvince.Donators.Add(new Donator
            {
                Id = 4
            });

            using (var db = new DonatorsContext())
            {
                PrintAllDonators(db); //删除前先输出现有的数据,不能写在下面的using语句中,否则Attach方法会报错,原因我相信你已经可以思考出来了
            }
            using (var db = new DonatorsContext())
            {
                db.Provinces.Attach(toDeleteProvince);
                foreach (var donator in toDeleteProvince.Donators.ToList())
                {
                    db.Entry(donator).State = EntityState.Deleted;
                }
                db.Entry(toDeleteProvince).State = EntityState.Deleted; //删除子实体再删除父实体。
                db.SaveChanges();
                Console.WriteLine("删除之后的数据如下:\r\n");
                PrintAllDonators(db);
            }
        }
Beispiel #3
0
        //Web应用,更新Province
        public static void Web应用UpdateProvince()
        {
            var province = new Province {
                Id = 2, ProvinceName = "山东省更新"
            };

            province.Donators.Add(new Donator
            {
                Name       = "醉、千秋", //再改回来
                Id         = 4,
                Amount     = 12m,
                DonateDate = DateTime.Parse("2015-7-12")
            });
            using (var db = new DonatorsContext())
            {
                db.Entry(province).State = EntityState.Modified;
                foreach (var donator in province.Donators)
                {
                    db.Entry(donator).State = EntityState.Modified;
                }
                db.SaveChanges();
            }
            Console.WriteLine("Web应用更新Province");
        }
Beispiel #4
0
        //Insert Province ,修改实体的状态为added
        public static void InsertProvince2()
        {
            var province = new Province {
                ProvinceName = "广东省"
            };

            province.Donators.Add(new Donator
            {
                Name       = "求余",
                Amount     = 30,
                DonateDate = DateTime.Parse("2016-7-12")
            });

            using (var db = new DonatorsContext())
            {
                db.Entry(province).State = EntityState.Added;
                db.SaveChanges();
            }
            Console.WriteLine("InsertProvince,修改实体的状态为added");
        }