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(); } }