コード例 #1
0
ファイル: Program.cs プロジェクト: mrtony/EF6Lab
        private static void Practice13()
        {
            using (var db = new ContosoUniversityEntities())
            {
                var courses = db.Course;
                db.Database.Log = (msg) => {
                    Trace.WriteLine(msg);
                };
                foreach (var item in db.vwCourse)
                {
                    Console.WriteLine(item.Title);
                }

                var course = courses.Find(1);
                course.Credits = CreditType.Meduim;
                db.SaveChanges();
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: mrtony/EF6Lab
        /// <summary>
        /// 目的: 測試使用timestamp的並行模式 - 練習 Entity Framework 的並行模式 (Concurrency Mode) 使用方式
        /// 準備:
        /// 1. DB中新增type為timestamp的RowVersion欄位
        /// 2. 更新資料庫模型
        /// 3. 將RowVersion的並行模式設為Fixed
        /// 測試
        /// 1. 將course某一筆的credit改為777, build成功後,將執行環境copy到某資料夾, 然後執行 -> exe1
        /// 2. 將course某一筆的credit改為666, build成功後執行 -> exe2
        /// 3. 在exe1的window按任一鍵, 先更新好credit
        /// 4. 在exe2的window按任一鍵, 會發生DbupdateConcurrency exception
        /// </summary>
        private static void Practice09()
        {
            using (var db = new ContosoUniversityEntities())
            {
                var course = db.Course.Find(1);
                course.Credits = CreditType.Low;

                Console.ReadKey();
                db.SaveChanges();
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: mrtony/EF6Lab
        /// <summary>
        /// 目的: 使用離線模式修改資料
        /// </summary>
        private static void Practice08()
        {
            Course course;
            using (var db = new ContosoUniversityEntities())
            {
                course = db.Course.Find(1);
                course.Credits = CreditType.Low;
            }

            //即使attach了, 但沒有修改state, EF還是不會對DB作Update
            using (var db = new ContosoUniversityEntities())
            {
                db.Course.Attach(course);

                db.SaveChanges();
                Console.WriteLine("Before attached and change state, Credits={0}", db.Course.Find(1).Credits);
            }

            using (var db = new ContosoUniversityEntities())
            {
                db.Entry(course).State = System.Data.Entity.EntityState.Modified; //=db.Course.Attach(course);
                db.SaveChanges();

                Console.WriteLine("After attached, Credits={0}", db.Course.Find(1).Credits);
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: mrtony/EF6Lab
        /// <summary>
        /// 目的: 使用 db.ChangeTracker.Entities() 實作在修改資料後 SaveChanges() 時自動填入 ModifiedOn 欄位的內容
        /// </summary>
        private static void Practice07()
        {
            using (var db = new ContosoUniversityEntities())
            {
                var course = db.Course.Find(1);

                course.Credits = CreditType.Low;

                var entry = db.Entry(course);

                Console.WriteLine("Original Value=" + entry.OriginalValues.GetValue<int>("Credits"));
                Console.WriteLine("Current Value=" + entry.CurrentValues.GetValue<int>("Credits"));

                Console.WriteLine("State:" + "\t" + entry.State);

                db.SaveChanges();
            }
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: mrtony/EF6Lab
        /// <summary>
        /// 練習多對多的新增方式
        /// Requirement: Course=7的課程沒有Instructor, 需要新增Person=5當成它的instructor
        /// Todo
        /// 1: 修改course導覽屬性的Person為instructors, 可讀性較高
        /// 2. 對course做新增instructor
        /// </summary>
        private static void Practice04()
        {
            using (var db = new ContosoUniversityEntities())
            {
                var course = db.Course.Find(7);
                course.Instructors.Add(db.Person.Find(5));

                db.SaveChanges();
            }
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: mrtony/EF6Lab
        /// <summary>
        /// 實驗StoreGeratedPattern (Identity, Computed, None)
        /// </summary>
        private static void Practice03()
        {
            using (var db = new ContosoUniversityEntities())
            {
                var c1 = new Course()
                {
                    Title = "Test",
                    DepartmentID = 1,
                    Credits = CreditType.Low,
                    ModifyOn = DateTime.Now
                };

                db.Course.Add(c1);
                db.SaveChanges();

            }
        }