Пример #1
0
        public void Test_Entity_Dirty_Attach()
        {
            Task task = null;
            using (var db = new TrackerDataContext { Log = Console.Out })
            {
                task = db.Task.GetByKey(TaskId);
                task.Detach();
            }
            task.Status = Status.Done;
            Assert.IsFalse(task.IsAttached());

            // Let's update the task in a seperate DataContext.
            using (var db = new TrackerDataContext())
            {
                db.Log = Console.Out;

                var task2 = db.Task.GetByKey(TaskId);
                task2.Status = Status.InProgress;
                db.SubmitChanges();
            }

            // Attach the original task and send it to the database.
            using (var db = new TrackerDataContext())
            {
                db.Log = Console.Out;

                Assert.IsFalse(task.IsAttached());
                db.Task.Attach(task, true);
                db.Refresh(RefreshMode.KeepCurrentValues, task);
                Assert.IsTrue(task.IsAttached());
                db.SubmitChanges();
            }
        }